0

なぜbackbonejsがモデル内に多くのコレクションを作成しているのに、いつ停止するのかわかりません。

http://backbonetutorials.com/what-is-a-collection/からこの例を見てください。コンソールを調べてdオブジェクトを開き続けると、その中には常に「コレクション」オブジェクトがあり、同じオブジェクトを繰り返し繰り返します。

これがバグなのか何かなのかはわかりませんが、これが正常であるとは確信していません。

誰かが私を教えてください。ありがとう。

var Song = Backbone.Model.extend({
    defaults: {
        name: "Not specified",
        artist: "Not specified"
    },
    initialize: function(){
        console.log("Music is the answer");
    }
});

var Album = Backbone.Collection.extend({
    model: Song
});

var song1 = new Song({ name: "How Bizarre", artist: "OMC" });
var song2 = new Song({ name: "Sexual Healing", artist: "Marvin Gaye" });
var song3 = new Song({ name: "Talk It Over In Bed", artist: "OMC" });

var myAlbum = new Album([ song1, song2, song3]);
console.log( myAlbum.models ); // [song1, song2, song3]

@ryan

ええ、私はモデルがそのコレクションへの参照を含むかもしれないことを理解しています。しかし、終わりがないように見えるこの種の連鎖オブジェクトがあるのはちょっと奇妙です。オブジェクトツリーは次のようなものです。

[d, d ,d]
   0 > d
        > collection
            > models
                 0 > d
                      > collection
                           > models
                                0 > d
                                     > collection
                                           > models
                                                  0 > d
                                                   ...
                                                   keeps on and on and on

なぜそうなのですか?

4

2 に答える 2

3

何も悪いことはありません。それらは単なる参照です。コレクションに追加されると、すべてSongにそのコレクションへの参照が含まれます。Album

アップデート。たぶん、この簡単な例は、何も異常ではないことを理解するのに役立ちます。これは基本的にバックボーンが行っていることです。collection -> user唯一の目的は、ナビゲートまたはナビゲートを容易にすることuser -> collectionです。

var site = { name: 'stackoverflow' };
var users = [{ name: 'pneftali' }];
for (var i = 0; i < users.length; i++) {
    users[i].site = site;
}
site.users = users;
console.log(site.users);
于 2013-03-17T17:52:12.057 に答える
2

すべてmodelにへの参照がありcollectionます。そして、すべてcollectionがそのへの参照を持っている必要がありますmodels。Javascriptは、コレクションへの参照のみを保持します。開発者ツールバーには、参照の詳細が表示されます。それらは実際には互いにネストされていません。同じオブジェクトがあります。cidチェーンを下って変わらないモデルから確認できます。

于 2013-03-18T07:05:22.993 に答える