2013-03-17 90 views
0

爲什麼backbonejs在模型中創建大量集合,我不知道它何時停止。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 

爲什麼這樣呢?

回答

3

沒有什麼錯。他們只是參考。每當Song包含對其集合的引用,即Album,一旦它被添加到該集合中。

更新。也許this simple example將幫助你瞭解什麼都不正常。這基本上是幹什麼的。它的唯一目的是讓您輕鬆瀏覽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); 
+0

感謝您的回答。我已經更新了我的問題以進一步說明我的觀點。 – pneftali 2013-03-18 01:28:08

+0

@pneftali看到我的更新 – ryan 2013-03-18 11:41:54

+0

我明白了。現在過了一段時間纔有意義。模型包含對其集合的引用,因此在控制檯上查看時它看起來像一個無限循環。謝謝! :) – pneftali 2013-03-18 15:29:02

2

每個model都提及collection。並且每個collection都必須提及其models。 Javascript只保存對集合的引用。開發人員工具欄只顯示引用的詳細信息。它們實際上並沒有互相嵌套。有相同的對象。您可以從型號cid確認不會改變鏈條。

+0

也正確,謝謝! :) – pneftali 2013-03-18 15:30:59