collection.reset没有填充所有模型

时间:2015-04-23 14:43:49

标签: javascript backbone.js

我的Backbone集合调用这样的抓取

collection.fetch({data : {product_type: foo, year: bar}, processData: true, success: function(response){
            console.log(response, "response from server");
            collection.reset(response);
        }});

在Chrome控制台中,它显示该阵列有六条记录,但是当我进一步检查响应时,阵列中实际上有0个模型。您可以通过注意第一行中的数字6和最后一行中的数组[0]来看到以下内容:

MyCollection {length: 6, models: Array[6], _byId: Object, sortField: "date", sortDirection: "DESC"…}
_byId: Object
_events: Object
_listenId: "l1"
length: 0
model: function (attrs, options) {
models: Array[0]  
//...other details  ommitted...// 

此外,我的6个预期模型中只有1个出现在视图中。鉴于上述情况,我认为可能会出现0或6,但有1个。

为什么收集的所有6个模型的收藏品都没有重置?

1 个答案:

答案 0 :(得分:1)

基于文档Collection#fetch我可以看到success回调有3个参数

(collection, response, options)

因此,在您的情况下,response是根据服务器上的collection数组更新的JSON,因此您无需再次重置它,而是将其重置为集合意味着您添加清除集合并添加实际上是集合本身的新模型。所以你可以改用

collection.reset(response.models)

但我认为你不应该在success回调中对收集执行任何操作,骨干会自动为你做。