2012-07-29 62 views
0

我在模型視圖上更改狀態,我在想如何找到模型引用的集合的乾淨方式。從模型中查找骨架集合

本質上,它的工作原理是這樣的:當一個模型被觸發打開時,它需要首先升級並讓集合查詢其他模型,然後將當前「打開」的任何內容變爲「關閉」。現在我傳遞每個模型視圖對它來自的集合視圖的引用,以便它可以從那裏查詢集合,但是我認爲這可能是不好的做法。

回答

3

fine manual

被觸發集合中的模型也將在收集直接觸發,爲方便起見,任何事件。

所以,如果你在集合中更改屬性,active,在模型上,那麼這兩個模型和收集將觸發"change:active"事件。你可以有集合聽本身的適當"change"事件:

initialize: function() { 
    _.bindAll(this, 'active_changed'); 
    this.on('change:active', this.active_changed); 
}, 
active_changed: function(active_m) { 
    if(!active_m.get('active')) 
     return; 
    this.each(function(m) { 
     if(m.id != active_m.id) { 
      console.log('Updating ' + m.id); 
      m.set({ active: false }, { silent: true }); 
     } 
    }); 
} 

set{silent:true}是隻是爲了避免產生從內部簿記更加事件;這可能或可能不適合你的情況。

演示:http://jsfiddle.net/ambiguous/VAnUq/

只具有一個模型中的「開」狀​​態是收藏級屬性,因此它是有道理的收集管理這一對旗下所有車型。

+0

Mu,你一直在保存一天。萬分感謝。 – captDaylight 2012-07-29 23:50:16