Ember.js 包装控制器动作时使用tryInvoke
最新指南说明将控制器操作包装到Ember.js 包装控制器动作时使用tryInvoke,ember.js,Ember.js,最新指南说明将控制器操作包装到 actions: { loadMore: function() {} } 当我这样做时,我以前必须在控制器上触发操作的代码不再工作: Ember.tryInvoke(view.get('controller'), 'loadMore'); 怎样才能让这一切重新开始 编辑 使用tryInvoke的完整代码: didInsertElement: function() { 'use strict'; var view = this;
actions: {
loadMore: function() {}
}
当我这样做时,我以前必须在控制器上触发操作的代码不再工作:
Ember.tryInvoke(view.get('controller'), 'loadMore');
怎样才能让这一切重新开始
编辑
使用tryInvoke的完整代码:
didInsertElement: function() {
'use strict';
var view = this;
this.$().bind('inview', function(event, isInView, visiblePartX, visiblePartY) {
if (isInView) {
Ember.tryInvoke(view.get('controller'), 'loadMore');
}
});
},
您可以使用,并将action
属性设置为所需的操作名称,在这种情况下,loadMore
。使用triggerAction
将发送操作
因为jquery事件与ember运行循环分离,所以我将triggerAction包装在ember.run中
App.YourView = Ember.View.extend(Ember.ViewTargetActionSupport, {
action: 'loadMore',
didInsertElement: function() {
'use strict';
var view = this;
this.$().bind('inview', function(event, isInView, visiblePartX, visiblePartY) {
if (isInView) {
Ember.run(function() {
view.triggerAction();
});
}
});
},
});
你确定你把控制器弄对了吗?根据几个月前在Ember 1.2中的提交,现在可以从“targetObject”而不是“controller”的视图访问控制器:
触发Ember.tryInvoke(view.get('controller'),'loadMore')的视图操作是什么代码>,单击,鼠标@Márciordriguescorreajúnior我刚刚添加了代码我在1.0上,它仍然是
视图。get('controller')