获取相同的Item集合但具有不同的限制

时间:2015-03-27 07:52:37

标签: javascript jquery backbone.js backbone-model

在我的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的新手。

2 个答案:

答案 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项)并进行渲染。