Javascript 为什么我的backbone.js集合重置只添加了1个模型
有问题的集合获取一组好友,然后使用Javascript 为什么我的backbone.js集合重置只添加了1个模型,javascript,collections,backbone.js,Javascript,Collections,Backbone.js,有问题的集合获取一组好友,然后使用reset保存所有新好友。我遇到的问题是,它只向收藏中添加了一个朋友 我在cModels上做了一个console.log,它显示了数组中的300多个对象,所以我知道不仅仅只有一个。重置只会添加1的任何原因 这是我的收藏: FriendsCollection = Backbone.Collection.extend({ model: UserModel, getFriends: function () { $.post(baseU
reset
保存所有新好友。我遇到的问题是,它只向收藏中添加了一个朋友
我在cModels
上做了一个console.log
,它显示了数组中的300多个对象,所以我知道不仅仅只有一个。重置只会添加1的任何原因
这是我的收藏:
FriendsCollection = Backbone.Collection.extend({
model: UserModel,
getFriends: function () {
$.post(baseUrl + dataFriendsUrl, $.proxy(function(data) {
var friends = $.parseJSON(data);
var cModels = [];
for(var key in friends.data) {
var user = new UserModel();
user.set({
fbid: friends.data[key].id,
username: friends.data[key].name
});
cModels.push(user);
}
this.reset(cModels);
console.log(this);
}, this));
}
});
使用开发工具检查模型后,模型看起来很好。这可能是因为模型具有相同的id
主干集合不允许具有重复id值的模型。(见此)如果是这种情况,尽管OP应该得到一个错误“不能将同一个模型添加到集合中两次”他是对的-我在
集合中添加了id:key
,并修复了它。@machineghost我引用的提交已删除,引发了该错误,谢谢。我正准备把电脑设备扔到房间的另一边。我有一组只读的模型(基本上是数据库中其他数据的统计数据,而不是用户可以保存的数据),所以我认为在这种情况下id并不重要。但它确实…主干的collection.reset只是重置集合,然后调用collection.add,不管传递给它什么。Add在遇到问题时抛出错误方面非常好,所以我很惊讶您没有看到任何错误。进行添加的实际行是splice.apply(this.models,[index,0].concat(models))代码>。您可能需要尝试在调试器前面添加调试器
或控制台.log(this.models,models,index)
行,以查看您的整套模型是否达到了这一点。