2012-11-22 51 views

回答

27

reset設置集合與您指定的型號的數組:

collection.reset([ { name: "model1" }, { name: "model2" } ]); 

fetch從檢索收集數據服務器,使用您爲集合指定的URL。

collection.fetch({ url: someUrl, success: function(collection) { 
    // collection has values from someUrl 
} }); 

Here's a Fiddle illustrating the difference.

+0

這麼好的,簡潔,完整的答案非常感謝:) – benhowdle89

+0

這個答案是不完整的。是否重置寫入集合中的所有現有模型或什麼? –

+0

@AlexMills是的,它清除,然後設置 – McGarnagle

1

reset()用於用新數組替換集合。例如:

@collection.reset(@full_collection.models) 

將加載@full_collections車型,但是

@collection.reset() 

將返回空的集合。 並且fetch()函數返回模型的默認集合

3

我們假設您已閱讀documentation,否則這裏有點混淆。

如果你看看fetchreset文檔,它說的是,假設你指定的collectionurl財產 - 這可能會指向一些服務器代碼,並應返回json陣列的models,和你想要collection被填充models被退回,您將使用fetch

例如你正在從服務器返回的集URL以下JSON:

[{ 
    id : 1, 
    name : "a" 
}, { 
    id : 2, 
    name : "b" 
}, { 
    id : 3, 
    name : "c" 
}] 

後成功提取,這將創造您的收藏3種型號。如果您尋找collection fetchhere的代碼,您將看到提取會得到響應,並在內部根據指定的選項調用resetadd

因此,回到討論中,reset假設我們已經有json of models,我們想要存儲在集合中,我們將它作爲參數傳遞給它。在你的生活中,如果你想要更新系列並且你已經擁有客戶端的模型,那麼你不需要使用fetchreset就可以完成你的工作。

因此,如果您想在同一JSON集合中充滿復位的幫助下,你可以做這樣的事情:

var _self = this; 
$.getJSON("url", function(response) { 
    _self.reset(response); // assuming response returns the same json as above 
}); 

那麼,這是不是要遵循實踐中,這種情況下fetch更好,它只是用於例子。

重置的另一個示例是在documentation頁面上。

希望它讓想法一點點,讓您的生活更美好:)