如何正确扩展两个Backbone视图

时间:2015-05-06 14:16:53

标签: javascript backbone.js marionette

问题: 如何以正确的方式扩展BaseViewMarionette.LayoutView

我有:类似的观点:

var MyView = BaseView.extend({
    initialize: function(options) {
       this._super(options); // backbone-super.js
       ...        
    }
});

我希望:MyView移至Marionette视图。有两种方法:

1)问题是this._super停止工作。我想Backbone试图在initialize

中找到Marionette.LayoutView方法
var MyView = BaseView.extend(Marionette.LayoutView.prototype).extend({
    initialize: function(options) {
       this._super(options); // NOT WORK 
       this.regionManager.addRegions(options.regions); // WORK
       ...        
    }
})

2)这种方法的问题是MyView.regionManagerundefined。我认为原型指向BaseView

var MyView = Marionette.LayoutView.extend(BaseView.prototype).extend({
    initialize: function(options) {
       this._super(options);  // WORK
       this.regionManager.addRegions(options.regions); // NOT WORK
       ...        
    }
})

1 个答案:

答案 0 :(得分:0)

试试这样:

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);