1

私はバックボーンjsに不慣れで、私の最初のやりとりはかなり複雑なようです。問題はこのようになります
私はこのようなモデルを作りました

window.Dir = Backbone.Model.extend({
                defaults: { 
                  "Name": "", 
                  "ChildNodes": new window.FSNodeCollection() },
                GetFullName: function () { this.get("id"); }
            });

window.FSNodeCollection私が作った他のコレクションです。new window.FSNodeCollection()

お気づきのように、私が読んだ内容に応じてChildNodeswindow.FSNodeCollection()
、ChildNodes属性の値をこれに設定しました が、このモデルを使用する場合は、の値を新しいものに設定する必要があります。

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に追加されていますが、ChildNodesfsNodefsNode2
何が間違っていますか?

このようなことをしようとすると

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)

問題はもう残っていません。

4

1 に答える 1

1

問題は、それらが両方とも同じ配列を参照していることです。モデルを作成するときに、その時点で配列を初期化する必要があります (初期化メソッドを使用するか、配列を割り当てる関数を割り当てることができます)。コレクション)。

あなたはこれらの質問を見てみたいかもしれません

Backbone.js モデルの配列は本質的に静的ですか?

Backbone.js モデルの新しいインスタンスに、定義済みのデフォルトに追加の値が含まれるのはなぜですか?

于 2012-05-11T16:43:41.370 に答える