在“defaults”backbone.js中提供新的集合

时间:2012-05-11 16:10:32

标签: model-view-controller backbone.js

我对骨干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被添加到ChildNodesfsNode 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)

问题依然存在。

1 个答案:

答案 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?