Backbone collection.reset添加了一个不正确的模型

时间:2014-10-04 22:56:50

标签: javascript backbone.js collections

我有一个通过搜索框过滤的集合。执行搜索/过滤时,我得到的结果是集合。此集合是正确的,包含搜索中的预期模型。当我使用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);
    }

图片显示了不同日志点的内容: enter image description here

同样,过滤后的集合(在结果之后)是100%正确的,我期望它是什么。复位之前this.collection的状态也是正确的。我唯一做的就是this.collection.reset(result);并再次记录this.collection。我听'reset'事件,当它触发时,显然没有模型可以渲染,我得到一个错误。

1 个答案:

答案 0 :(得分:2)

看起来results是一个Products集合。 collection.reset()需要一组模型,而不是集合。

尝试this.collection.reset(results.models);