我正在尝试将操作添加到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)
我想我错过了什么.
动作从模板冒泡到视图,然后是控制器,然后通过路径.除非您手动操作,否则任何操作都不会到达服务myService.send('someAction').
而不是服务操作,使用服务方法.
只需在服务上声明一个方法,然后在控制器中执行:
myService: Ember.inject.service(),
actions: {
someAction: function(arg) {
this.get('myService').someMethod(arg);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |