我无法弄清楚从服务器获取模型集合到我的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()
以获取特定类型的集合,以便始终发布适当的查询参数。