2013-03-24 53 views
2

我有這個問題,這是驅使我堅果。我有一個實體集合,名爲實體,它接收A和B對象。下面的代碼看起來很簡單,但並不像(I)那樣有效。 不知怎的,最後添加到實體集合的對象不會被添加。事實上,如果我在得到類似1,2,3,4,5,5而不是預期的1,2,3,4,5,6之前和之後打印長度,則A和B是「子類」的作爲模型的實體是A和B都有相應的視圖。最後,我期待6個可見對象,但我只得到5個。 有沒有人知道問題可能是什麼?提前致謝。Backbone.Marionette - 收集莫名其妙「缺少」一些元素

var that = this; 
_.each(this.as.models, function(a, i){ 
     that.entities.add(a); 
}); 
_.each(this.bs.models, function(b, j){ 
    that.entities.add(b); 
}); 
+1

難道是你有'this.as.models'和'this.bs.models'中的兩個對象相同的id? – snedkov 2013-03-24 21:25:35

+0

是的,那是問題所在。非常感謝你。對我來說這很愚蠢。我之前檢查過,但當時這不是問題。然後,我改變了一些代碼,現在我碰巧有匹配的ID,但從未想起再次檢查它。 – pgpv 2013-03-24 21:31:09

回答

2

將對象或Backbone模型添加到Backbone集合時,會進行檢查以查找該對象是否不在集合中。如果插入現有對象,則不會發生任何更改,也不會觸發事件等等。通過平等或通過匹配id屬性來將對象視爲相同。

有一種方法可以通過將{merge: true}選項傳遞給add方法來覆蓋此方法。