【问题标题】:Backbone collection recursively repeats itself主干集合递归地重复自身
【发布时间】:2014-07-05 04:45:39
【问题描述】:
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

【问题讨论】:

    标签: javascript backbone.js recursion collections


    【解决方案1】:

    模型有一个collection 属性,当模型第一次添加到集合中时,该属性总是被设置。结果,爱集合会记录每个模型,这必然会再次记录集合......等等。

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

    console.log(myCol.toJSON());
    

    【讨论】:

    • 好的,这是正常行为,我不应该担心吗?谢谢,我以为我做错了什么!)
    • 是的,这很正常。 toJSON() 无论如何对于日志记录更有用,除非您急于查看事件处理程序或诸如此类的东西。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2019-09-08
    • 2015-05-30
    相关资源
    最近更新 更多