2014-06-27 68 views
0

我有一个BackboneJS复合模型,它有2个属性;BackboneJS迭代复杂模型

"myAttr1": new MyObj1(model.myAttr1), 
"myCollectionAttr": new MyObj2(model.myCollectionAttr) 

MyObj2看起来像

"attr1" : new Base1(), 
"attr2" : new Base2() 

现在我想成立一​​个内部级属性(即一的基础1属性)。所以我重复说;

self.model.get("myCollectionAttr").each(function(model) { 
    model.get("attr1").set('basemodel1attr','Y'); 
}); 

所以和基础1模型和Base2像有和basemodel1attr basemodel2attr

属性虽然model.get( “attR1位”)返回我的属性列表。我不能在其上使用.set()。

对我的内部属性进行设置的正确方法是什么?

+0

你可以请附上和基础1码和Base2? – Evgeniy

+0

已添加...它们由简单的字符串属性组成...... – testndtv

+0

是Backbone.Model上的Base1和Base2实例? – Evgeniy

回答

0

如果我正确你想通过你的收藏的模型迭代,并设置该模型的一个特定的属性,这样

$.each(collection.models, function(i, model){ 
    model.set('item','new value'); 
} 
0

你混了您的访问理解你。您可以访问MyObj2的属性,就好像它是一个集合。但是你说MyObj2是一个模型,而不是一个集合。

self.model.get("myCollectionAttr").get("attr1").set("basemodel1attr", "Y"); 

除了命名你的属性和每个循环,没有提示你真的在任何地方使用集合。所以不要。

如果MyObj2是一家集你不应该尝试2个不同的模型添加到收藏:

window.SomeModel = Backbone.Model.extend({ "attr1": new Base1(), "attr2": new Base2() }); 
window.SomeColl = Backbone.Collection.extend({ model: SomeModel });