【问题标题】:Backbone collection.reset adds one incorrect modelBackbone collection.reset 添加了一个不正确的模型
【发布时间】:2014-10-04 22:56:49
【问题描述】:

我有一个通过搜索框过滤的集合。执行搜索/过滤器时,我得到一个集合的结果。此集合是正确的,并且包含搜索中的预期模型。当我使用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' 事件,当它触发时,显然没有要渲染的模型,我得到一个错误。

【问题讨论】:

    标签: javascript backbone.js collections


    【解决方案1】:

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

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

    【讨论】:

    • 有趣,有效。我发誓我昨天也试过了(老实说,这是我的第一个想法),但我想已经晚了。谢谢大家。
    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多