这两个选项都会导致视图的正确行为。这个问题更多的是关于哪种方法更有效,或者出于其他原因需要。
如果还有其他方法可以解决这个问题,请告诉我们!
在骨干视图的初始化函数内扩展。
define([
'mixins/fooMixin',
'mixins/barMixin'
],
function(FooMixin, BarMixin) {
var FooBarView = BackboneLayout.extend({
initialize: function() {
_.extend(this, FooMixin);
_.extend(this, BarMixin);
/* do other things */
},
mySpecialMethod: function() {
this.foo();
this.bar();
}
});
return FooBarView;
});
在创建骨干视图之前扩展普通的'javascript对象。
define([
'mixins/fooMixin',
'mixins/barMixin'
],
function(FooMixin, BarMixin) {
var FooBarViewDefn = {};
_.extend(FooBarViewDefn, FooMixin, BarMixin, {
initialize: function() {
/* do other things */
},
mySpecialMethod: function() {
this.foo();
this.bar();
}
});
return BackboneLayout.extend(FooBarViewDefn);
});
答案 0 :(得分:1)
nr 2,毫无疑问,因为它只运行一次,每次实例化视图时都会执行#1。