Inheritance 这似乎是执行backbone.js视图继承的最佳/正确方法吗

Inheritance 这似乎是执行backbone.js视图继承的最佳/正确方法吗,inheritance,views,backbone.js,Inheritance,Views,Backbone.js,这是我问的这个问题的一个后续问题 但这有点混乱,现在我有了一个解决办法,我只想有人告诉我,如果我疯了 我正在做的事情如下: dci.Controller = Backbone.View.extend({ defaults:function(){ return { views:{}, modules:{}, isDestroyed:false, destroy:function(){ if(this.

这是我问的这个问题的一个后续问题

但这有点混乱,现在我有了一个解决办法,我只想有人告诉我,如果我疯了

我正在做的事情如下:

dci.Controller = Backbone.View.extend({
defaults:function(){
    return {
        views:{},
        modules:{},
        isDestroyed:false,
        destroy:function(){
            if(this.isDestroyed){return;}
            this.isDestroyed = true;
            $.each(this.views,function(i,item){
                item.remove();
            });
            $.each(this.modules,function(i,item){
                item.destroy();
            });
        }
    }
}

});
var controller = new dci.AssetController(someOptions);   
然后我使用控制器执行以下操作:

dci.AssetController  = dci.Controller.extend({
events:_.extend({ 
    // whatever events here
}, dci.Controller.prototype.events),

initialize:function(options){
    $.extend(this,this.defaults());
}
});
最后,我实例化如下:

dci.Controller = Backbone.View.extend({
defaults:function(){
    return {
        views:{},
        modules:{},
        isDestroyed:false,
        destroy:function(){
            if(this.isDestroyed){return;}
            this.isDestroyed = true;
            $.each(this.views,function(i,item){
                item.remove();
            });
            $.each(this.modules,function(i,item){
                item.destroy();
            });
        }
    }
}

});
var controller = new dci.AssetController(someOptions);   
因此,现在在我的控制器变量上,我有一个视图和模块的集合,每个实例都是唯一的。因此,如果出于某种原因,我有两个dci.AssetController(实际上,我对模块使用相同的模型,这是当您有同一类的多个实例时),它们每个都有自己的视图和模块集合

这让我痛苦了一段时间,但我认为这会起作用,我特别要感谢布莱恩·吉尼西奥,他让我以上述方式走上了这条轨道

现在请告诉我这是否是一个疯狂的模式。 谢谢
Raif

如果您要创建一个新的基本视图,您可能应该坚持使用视图术语,而不是以前在后端使用的控制器。。这可能会让人困惑

其次,我看不出您如何设置
isDestroyed


总的来说,创建分层视图对我来说很好(到目前为止我一直在手动进行)。但不确定如何使用可变模块。否则,在非包装器视图中,我认为这是太多额外的初始化代码。

在视图上调用Destroy时设置isDestroyed标志(下面几行)。我在经常重复但需要不止一个“类”或“视图”的情况下使用的模块,例如放在jquery弹出窗口中的Ajax表单。我创建了一个模块,其中包含一个url(用于ajax)和一组具有相应功能的按钮。然后我创建两个视图。这并不是像控制器那样高层次的问题。控制器可能有这些模块中的一个,一个主视图和一个gridview,所有这些都由它控制。