主干:方法冲突的混合

Backbone: mixins with conflicting methods

本文关键字:混合 冲突 方法 主干      更新时间:2023-09-26

我从这篇文章开始使用mixins:在Backbone中做视图mixins的正确方法

var MyMixin = {
  foo: "bar",
  sayFoo: function(){alert(this.foo);}
}
var MyView = Backbone.View.extend({
 // ...
});
_.extend(MyView.prototype, MyMixin);
myView = new MyView();
myView.sayFoo(); //=> "bar"

这工作良好,除非它是一个冲突的方法在混合:例如render()在mixin和render()在实际视图。

我怎么能先触发mixin方法然后再触发实际的视图方法呢?

我建议使用Backbone。它提供了一种非常简洁的方式来指定mixins(尊重继承):

var Mixin = {
  initialize: function() {
    console.log("I'll be called as well as the class's constructor!");
  }
};
var View = Backbone.View.extend({
  mixins: [ MyMixin ]
});

我已经在这篇博文中详细说明了。

为什么不直接使用关于该问题的另一个答案:Backbone-Mixin Gist?