我想使用Mixin拦截一系列动作(在控制器,路径或组件上执行特定动作功能之前)。我有什么方法可以做到这一点吗?
代码看起来像:
App.MyMixin = Em.Mixin.create({
interceptorFunction : function(actionName){
console.log('intercepted action: ' + actionName);
}
});
App.TheInterceptedComponent = Em.Component.extend(App.MyMixin, {
actions : {
sampleAction : function() {
console.log('sampleAction std handler called');
}
}
});
寻找在sampleAction之前调用intereptorFunction的方法。
谢谢。
答案 0 :(得分:1)
Here is a working demo其中,在调用控制器中的处理程序之后,首先执行mixin中的处理程序。要调用控制器处理程序,我们需要调用this._super();
。
App.MyMixin = Em.Mixin.create({
actions: {
actionHandler: function() {
alert('Handled In Mixin');
this._super();
}
}
});
App.IndexController = Em.ObjectController.extend({
actions: {
actionHandler: function() {
alert('Handled In Controller');
}
}
},
App.MyMixin
);