我無法弄清楚從服務器獲取模型集合到我的Backbone集合中的正確方法,假設我不想從數據庫獲取所有模型,而是需要一組模型(由特定模型過濾屬性)。如何使用Backbone.js從服務器獲取模型集合?
我能想出的唯一方法是重寫Fetch並使用函數的「options」參數將過濾器定義傳遞給我的Backbone.Sync函數。
有沒有更好的方法?
我無法弄清楚從服務器獲取模型集合到我的Backbone集合中的正確方法,假設我不想從數據庫獲取所有模型,而是需要一組模型(由特定模型過濾屬性)。如何使用Backbone.js從服務器獲取模型集合?
我能想出的唯一方法是重寫Fetch並使用函數的「options」參數將過濾器定義傳遞給我的Backbone.Sync函數。
有沒有更好的方法?
3最常用的方式設置的集合, 是
在頁面引導模式,並加載它們與Collection.reset();
// you can print this trough serverside in your view, (you are bootstrapping these models)
var bsModels = [{'name': 'name1'},{'name': 'name3'},{'name': 'name2'}];
// in your code you can use that bootstrapped data via the reset method.
var myModel = Backbone.Model.extend({});
var myCollection = Backbone.Collection.extend({
model: myModel
});
myCollection.reset(bsModels);
您可以使用fetch,但它會加載任何和所有的方法,除非你重寫獲取方法
第三種選擇是寫你的ow ñAjax調用,取模型的正確用量,並使用相同的技術,因爲在#1,採用Collection.reset(data);
當然,有一個更好的辦法!您可以將查詢參數傳遞給您的fetch()
調用。所有傳遞給獲取的選項都直接進入$.ajax()
。因此,例如:
myCollection.fetch({
data: {
search: "boo",
limit: "20"
}
}
因爲這變成一個GET請求,這些將被追加到查詢字符串,你可以分析他們的服務器上,並返回相應項目的收集。
如果您覺得奇特,可以重新定義fetch()
以獲取特定類型的集合,以便始終發佈適當的查詢參數。