现在,这是一个从this演变而来的问题。那里有更多的信息,但我想,最好问一个直接的具体问题。所以这就是:
我们通常在控制器中定义操作,如下所示:
var FooController = Ember.Controller.extend({
actions: {
login: function() {
}
}
});
有没有办法定义一个catch all动作处理程序,如此(假设):
actions: {
login: function() {
},
*: function(actionName, paramArray) {
}
}
这类似于我认为已实施的余烬catch all route,但我还没有尝试过。
我需要这个,因为我的Ember.Component
使用{{partial}}
帮助器呈现用户提供的partial template。此部分可能在其中指定了{{action}}
。这些操作不会冒泡到调用控制器或路由,并在组件内丢失。第4段docs中提到了这一事实。
如果可以捕获所有操作,我的组件可以实现它并使用以下内容将操作发送回调用方:
actions: {
*: function(actionName, paramArray) {
this.sendAction(actionName, paramArray)
}
}
答案 0 :(得分:2)
控制器,视图和路由上的actions
哈希周围的功能由动作处理程序mixin [1]提供。如您所见,它注入send(actionName)
方法并使对象能够接收操作。您现在可以轻松覆盖此函数并捕获所有操作,而不是在actions
哈希中查找它 - 这就是实现的功能。