2013-03-24 57 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方法来覆盖此方法。