我有一个通过搜索框过滤的集合。执行搜索/过滤时,我得到的结果是集合。此集合是正确的,包含搜索中的预期模型。当我使用collection.reset(result)
时,它会添加一个骨干集合,其中包含一个与结果集合无关的模型,也不包含除标准集合主干之外的任何内容。
收藏
var Products = Backbone.Collection.extend({
model: Product,
url : '',
search : function(letters){
if(letters == "") return this;
var pattern = new RegExp(letters,"gi");
return new Products((this.filter(function(data) {
return pattern.test(data.get("title"));
})));
}
});
从视图:
search : function (ev){
var results = products.search($("#search").val());
console.log("result");
console.log(results);
this.collection.reset(results);
console.log("altered collection");
console.log(this.collection);
}
图片显示了不同日志点的内容:
同样,过滤后的集合(在结果之后)是100%正确的,我期望它是什么。复位之前this.collection的状态也是正确的。我唯一做的就是this.collection.reset(result);并再次记录this.collection。我听'reset'
事件,当它触发时,显然没有模型可以渲染,我得到一个错误。
答案 0 :(得分:2)
看起来results
是一个Products集合。 collection.reset()
需要一组模型,而不是集合。
尝试this.collection.reset(results.models);