这是我提出的问题的后续跟进
但它有点乱,现在我有一个解决方案,我希望有人告诉我,如果我疯了
我正在做的事情如下:
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();
});
}
}
}
});
然后我这样做使用控制器:
dci.AssetController = dci.Controller.extend({
events:_.extend({
// whatever events here
}, dci.Controller.prototype.events),
initialize:function(options){
$.extend(this,this.defaults());
}
});
最后我实例化如下:
var controller = new dci.AssetController(someOptions);
所以现在在我的控制器var上我有一组视图和模块,每个实例都是唯一的,所以如果我出于某种原因有两个dci.AssetCotrollers(实际上我对模块使用相同的模型,这就是你有的时候同一类的多个实例)它们各自拥有自己的视图和模块集合。
这让我有一段时间的杀戮,但我认为这会有效,我特别要感谢Brian Genisio,他让我在上述提到的这条轨道上。
现在请告诉我这是否是一个疯狂的模式。 谢谢, RAIF
答案 0 :(得分:0)
好吧,如果你要创建一个新的基本视图,你应该坚持使用View术语,而不是之前在后端的控制器......这可能会使某些人感到困惑。
其次,我不知道你是如何设置isDestroyed
的。
一般来说,制作层次结构视图对我来说听起来不错(到目前为止我一直手动完成)。不知道你如何使用模块变量。否则,在非包装器视图中,我认为这是额外的初始化代码。