我正在尝试在初始化函数中向Backbone.View添加一些处理功能,我希望将其转移到我的所有Backbone视图。问题是,我正在使用木偶,所以我不能做这样的事情:
var BaseView = Backbone.View.extend({})
因为Marionette扩展了Backbone.View本身。这就是我想做的事情:
// Add processoring logic to an extended version of Backbone.
Backbone.View.extend({
initialize: function(options){
if(options.hasOwnProperty("vents") {
// process vents
}
// native code. Calling the library's actual original function to maintain original functionality.
Backbone.View.initialize(this, aurguments);
}
})
var CollectionView = new Marionette.CollectionView({
vents: {VentCallName: function(){}}
// When initialize is called, it'll see the vents and deal with them automatically.
});
我只是不确定如何将功能添加到Backbone.View,同时保持其中已有的任何功能逻辑。
修改 的
如何在不创建新的扩展实例的情况下将初始扩展功能实际放入Backbone.View.initialize并将所有视图基于此?我不能让Marionette使用那个扩展视图,所以额外的处理必须进入Backbone.View的初始化函数。
如果我这样做,它会自行循环:
Backbone.View.prototype.initialize = function(){
console.log("moooo");
// custom logic then run Backbone.View.initialize native code.
Backbone.View.prototype.initialize.apply(this, arguments);
}
答案 0 :(得分:2)
Backbone.View.prototype.initialize.apply(this,arguments);
修改强>
好吧,这是一个稍微不同的问题。
var oldInitialize = Backbone.View.prototype.initialize;
Backbone.View.prototype.initialize = function(){
console.log("moooo");
// custom logic then run Backbone.View.initialize native code.
oldInitialize.apply(this, arguments);
}