从扩展对象调用“基类”方法

时间:2013-08-07 08:08:26

标签: ember.js

假设我有这个:

App.ControllerMixin = Ember.Mixin.create({
    setupController : function (entry) {
        ...
    }
});

App.BaseEditController = Ember.ObjectController.extend(App.ControllerMixin, {
    startEditing: function () {
        ...
        this.setupController(entry);
    },

});

App.ServicesEditController = App.BaseEditController.extend(App.ServicesMixin, {
    setupController : function (entry) {
    }
});

如何从ControllerMixin.setupController致电ServicesEditController.setupController

1 个答案:

答案 0 :(得分:3)

您可以使用this._super()从超类中调用方法。通常最好将此调用添加到您要覆盖的每个方法中。

App.ServicesEditController = App.BaseEditController.extend(App.ServicesMixin, {
    setupController : function (entry) {
      this._super(entry);
    }
});

扩展我的建议,为每个重写方法添加此调用,这是一个视图的Mixin示例。如果您的Mixin重写了didInsertElement,则应始终添加对this._super()的调用。 这可确保在应用多个Mixins时调用“all”didInsertElement实现。

App.SomeViewMixin = Ember.Mixin.create({
  didInsertElement : function(){
    this._super();
    // ... perform your logic
  }
});