emberjs - 向Ember.Service添加操作

dag*_*da1 2 ember.js

我正在尝试将操作添加到Ember 1.10中的Ember.Service但是我必须_actions使用actions哈希的别名来使其工作,我错过了什么?

export default Ember.Service.extend(Ember.ActionHandler, {
  actions:{
    addItem: function(label) {
      console.log(label);
    }
  },

  setup: Ember.on('init', function(){
    this._actions = this.actions;
  })
});
Run Code Online (Sandbox Code Playgroud)

查看ember源,该triggerEvent方法查询_actions哈希:

if (handler._actions && handler._actions[name]) {
  if (handler._actions[name].apply(handler, args) === true) {
    eventWasHandled = true;
  } else {
    return;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想我错过了什么.

And*_*aus 6

动作从模板冒泡到视图,然后是控制器,然后通过路径.除非您手动操作,否则任何操作都不会到达服务myService.send('someAction').

而不是服务操作,使用服务方法.

只需在服务上声明一个方法,然后在控制器中执行:

  myService: Ember.inject.service(),
  actions: {
    someAction: function(arg) {
      this.get('myService').someMethod(arg);
    }
  }
Run Code Online (Sandbox Code Playgroud)