2012-05-11 15 views
1

私はバックボーンjsで初めてです。問題は、私はこの"defaults"で新しいコレクションを提供していますbackbone.js

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

window.FSNodeCollectionのようなモデルを作った。この
ようになり、私が作ったいくつかの他のコレクションです。 あなたは私がのChildNodesの値を入れている気づくようnew window.FSNodeCollection()

に属性これは私が読んだものに応じて新しいwindow.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両方fsNodeChildNodesfsNode2 012に追加されています 何が間違っていますか?私はこの

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

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

あなたがはい、私はObject` `を指す` Model.attributes`キーを宣言することは良い考えだとは思わないこれらの質問

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?

+0

を見てみたいことがありますs。 – fguillen

+0

場合によっては、backbone.jsがコードを構造化する方法があります。それはまだJavaScriptであることを忘れてしまいますし、継承は他の言語でもうまく機能しません。 – Jack

関連する問題