我对骨干js很新,我的第一次互动似乎非常完美。问题就像这样 我做了这样的模型
window.Dir = Backbone.Model.extend({
defaults: {
"Name": "",
"ChildNodes": new window.FSNodeCollection() },
GetFullName: function () { this.get("id"); }
});
window.FSNodeCollection
是我制作的其他一些系列。
正如您将注意到我已将ChildNodes属性的值设置为new window.FSNodeCollection()
根据我所阅读的内容,应将ChildNodes
的值设置为新window.FSNodeCollection()
但是当我使用这个模型时
var fsNode = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "dir1",
})
});
var fsNode2 = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "dir2",
})
});
var subDir1Node = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "subDir1",
ChildNodes:new window.FSNodeCollection()
})
});
fsNode.get("Node").get("ChildNodes").push(subDir1Node);
subDir1Node
被添加到ChildNodes
和fsNode
的fsNode2
我做错了什么?
当我尝试做这样的事情时
var fsNode = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "dir1",
ChildNodes:new window.FSNodeCollection()
})
});
var fsNode2 = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "dir2",
ChildNodes:new window.FSNodeCollection()
})
});
var subDir1Node = new window.FSNode({
Type: "dir",
Node: new window.Dir({
Name: "subDir1",
ChildNodes:new window.FSNodeCollection()
})
});
fsNode.get("Node").get("ChildNodes").push(subDir1Node)
问题依然存在。
答案 0 :(得分:1)
问题是它们都引用相同的数组,你需要做的是确保在你创建模型时在那时初始化你的数组(你可以使用initialize方法或者你可以分配一个函数,将分配集合)。
您可能想看看这些问题
Arrays in a Backbone.js Model are essentially static?
Why do new instances of a Backbone.js model contain additional values to the predefined defaults?