在我的 Backbone.js 应用程序中,我有一组模型。
这些模型可以是“活动的”,也可以不是。当一个模型变为活动状态时,我想确保集合中的所有其他模型都处于活动状态或变为不活动状态。
目前,我通过缓存当前活动的模型、侦听更改事件并确定是否应该将缓存的模型设置为不活动来实现这一点。
这行得通,但是,它不能很好地扩展。不是因为我开始添加越来越多的属性,这些属性应该只对每个集合的一个模型是积极的,我发现重复的代码很混乱。
有什么建议吗?
这是我的代码
EOT.Collection.VehiclesBase = Backbone.Collection.extend({
model : EOT.Model.Vehicle,
currentOpen : false,
initialize : function(){
this.on('change:open', this.ensureSingleOpen);
},
ensureSingleOpen : function(changed){
//ensure the last open vehicle closes
if(changed!=this.currentOpen) {
if(this.currentOpen){
this.currentOpen.set('open',false);
}
if(changed.get('open')){
this.currentOpen = changed;
this.trigger('change:currentOpen');
}
}
}
});