2011-05-12 47 views
5

領型我的下一個腳本:如何從收集

var Game = Backbone.Model.extend({}); 

var GamesCollection = Backbone.Collection.extend({ 
    model: Game 
}); 

var games = new GamesCollection(); 

var portal = new Game({name: 'Tetris', year: '2017'}); 
games.add(portal); 

console.log(games.get(0)); 

爲什麼 「games.get(0)」 返回 '未定義'? 可能是我用get方法不正確嗎?

回答

8

簡短而親切,你需要:

games.at(0) 

.get是屬性。在模型上

5

AFAICT get()是屬性,但在你的情況下,你正在處理一個集合,這意味着get()是:「從一個集合,由id指定獲取典範」

E.g.

collection.get(1); // Get model with id = 1 from collection 

因爲當你取得了新的俄羅斯方塊遊戲,你必須不提供一個id,骨幹會產生一個對自己,這很可能不是「0」。

然而,在你的情況下,at(index)似乎是你尋找的那個,我的回答只是爲了澄清事情。

E.g.

collection.at(0); // Get model at collection index 0 
+0

這是最準確的答案。另一個原因是,它忽略了集合還具有「.get(id)」功能的非常重要的一點。 – jmk2142 2012-08-25 17:36:18

+0

這是一個很好的答案,但我無法弄清楚如何在返回的模型上調用方法。我認爲我可以這樣做: 'collection.at(0).methodName();' 但它是未定義的。關於我在做什麼的任何想法都是錯誤的? – dug 2013-03-12 23:16:07

+0

想通了。它實際上工作正常,方法本身並沒有返回任何東西,所以當我登錄時,我會得到'未定義',我認爲它沒有找到方法。它只是沒有從方法中得到任何回報。 – dug 2013-03-13 17:52:32