在同一路线内调用动作方法

时间:2014-08-29 15:17:42

标签: javascript ember.js

我正在尝试在同一路线中调用“动作”方法。

当我做这样的事情时,我得到一个错误:

  

没有处理动作'refreshFoo'。如果你确实处理了这个动作,   从一个动作处理程序返回true可能导致此错误   控制器,导致动作冒泡。

这是我的代码:

export default Ember.Route.extend({
   setupController: function (controller, model) {
      this._super(controller, model);
      this.send('refreshFoo');
   },

   actions: {
        refreshFoo: function () {
            alert('refreshed!');
        }
    }
});

http://emberjs.jsbin.com/rununifupono/2/edit

知道出了什么问题吗?我是否正确使用发送方法?

由于

2 个答案:

答案 0 :(得分:1)

错误是因为在setupControllerIndexRoute没有完全实现,因此当您发送操作时,它只能由ApplicationRoute

处理

为了让它按照你想要的方式工作,你需要打电话发送Ember.run.later

像这样

Ember.run.later(this, function(){
  this.send('refreshFoo')
});

工作箱:http://emberjs.jsbin.com/rununifupono/7/edit

答案 1 :(得分:0)

定义控制器内的动作。并致电controller.send('action');

http://jsbin.com/porer/1/