Ember.js中的动作钩子

时间:2014-07-08 08:58:58

标签: ember.js action

我想使用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的方法。

谢谢。

1 个答案:

答案 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
);