在我的Backbone项目中,我通过以下模型获得了一组Items:
MyApp.models.Items = Backbone.Model.extend({
url: "getItems"
});
然后再说:
var model = new MyApp.models.Items();
model.fetch().then(function(data){
// do something here with fetched data
});
此实施工作正常但我的情况是我在主页上获得所有项目,而在其他页面中只有3个项目。
如果我获取所有项目然后使用上面的模型将其限制为3
项目,我觉得这样会有点过分。
如何使用相同的模型获取有限数量的项目或所有项目?
PS:我是Backbone的新手。
答案 0 :(得分:1)
Backbone集合(Doc:http://backbonejs.org/#Collection)是一组模型。
当您处理用于填充UI组件(如数据网格/表),数据列表e.t.c的数据时,最好使用主干集合,这需要一组数据。
MyApp.collections.ItemCollection = Backbone.Collection.extend({
model: Item,
url: "getItems"
});
集合中的model属性指定集合中存在的数据类型。该集合使用此信息有效地管理其中的数据(在现有模型的服务器获取期间合并/可以将原始json数据传递给add等方法。)
使用集合获取方法(http://backbonejs.org/#Collection-fetch),从服务器获取数据。
var itemCollection = new MyApp.collections.ItemCollection();
itemCollection.fetch({
// The data property is used to send input data to the server method.
// Any data that will be required by the server method can be passed using this.
data: {
limit : 5
},
success : function(collection, response, options) {
//Do your logic
console.log("Success...");
}
error: function(collection, response, options) {
//Do your logic
}
});
答案 1 :(得分:0)
在您的方案中,您说您获取主页中的所有项目,并且仅在其他页面中使用其中的一部分。
对我来说,我会使用router
。
当用户从主页移动到其他页面时,您不需要获取新项目,只需选择所需项目(3项)并进行渲染。