Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 包装控制器动作时使用tryInvoke_Ember.js - Fatal编程技术网

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')