Javascript 如何正确扩展两个主干视图
问题:如何以正确的方式扩展Javascript 如何正确扩展两个主干视图,javascript,backbone.js,marionette,Javascript,Backbone.js,Marionette,问题:如何以正确的方式扩展BaseView和Marionette.LayoutView 我有:一个类似于: var MyView = BaseView.extend({ initialize: function(options) { this._super(options); // backbone-super.js ... } }); 我想:将MyView移动到木偶视图。有两种方法: 1) 问题是这个。\u super停止工作。我想
BaseView
和Marionette.LayoutView
我有:一个类似于:
var MyView = BaseView.extend({
initialize: function(options) {
this._super(options); // backbone-super.js
...
}
});
我想:将MyView
移动到木偶视图。有两种方法:
1) 问题是这个。\u super
停止工作。我想Backbone
试图在marionete.LayoutView
var MyView = BaseView.extend(Marionette.LayoutView.prototype).extend({
initialize: function(options) {
this._super(options); // NOT WORK
this.regionManager.addRegions(options.regions); // WORK
...
}
})
var MyView = Marionette.LayoutView.extend(BaseView.prototype).extend({
initialize: function(options) {
this._super(options); // WORK
this.regionManager.addRegions(options.regions); // NOT WORK
...
}
})
2) 这种方法的问题是MyView.regionManager
未定义。我假设原型指向BaseView
var MyView = BaseView.extend(Marionette.LayoutView.prototype).extend({
initialize: function(options) {
this._super(options); // NOT WORK
this.regionManager.addRegions(options.regions); // WORK
...
}
})
var MyView = Marionette.LayoutView.extend(BaseView.prototype).extend({
initialize: function(options) {
this._super(options); // WORK
this.regionManager.addRegions(options.regions); // NOT WORK
...
}
})
试着这样做:
var View = BaseView.extend({
constructor: function () {
BaseView.prototype.constructor.apply(this, arguments);
Backbone.LayoutView.prototype.constructor.apply(this, arguments);
}
});
_.extend(View.prototype, Backbone.LayoutView.prototype);
我得到了超过最大调用堆栈大小的。我还将主干.LayoutView
更改为木偶.LayoutView
我不知道您的基本视图发生了什么,但这不会导致无限循环。您所要做的就是调用BaseView
构造函数,然后调用LayoutView
构造函数。