Backbone集合以递归方式重复

时间:2014-07-05 04:45:40

标签: javascript backbone.js recursion collections

var MyMod = Backbone.Model.extend({
    defaults: {
        someField: "123"    
    }
});

var MyCol = Backbone.Collection.extend({
    model: MyMod
});

var mod1 = new MyMod({someField: "222"});
var mod2 = new MyMod({someField: "333"});
var mod3 = new MyMod({someField: "555"});

var myCol = new MyCol();

myCol.add(mod1);
myCol.add(mod2);
myCol.add(mod3);

console.log(myCol);

我不明白这段代码有什么问题。当我在调试器或console.log中检查结果集合时,它有一些奇怪的递归结构 - 它有模型,每个模型都有模型集合,每个模型都有相同模型的集合 - 依此类推。 这是fiddle

1 个答案:

答案 0 :(得分:1)

模型具有collection属性,该属性在首次将模型添加到集合时始终设置。因此,爱好集合记录每个模型,这必然会再次记录集合......等等。

如果要记录集合的内容,可以使用toJSON()方法,该方法默认返回包含模型属性的普通对象的简单数组。

console.log(myCol.toJSON());