Backbone fetch()不会重置集合

时间:2013-08-22 23:57:02

标签: javascript backbone.js

我有一种感觉,我这样做非常糟糕。我想通过我的Backbone Collection从我的服务器获取和合并模型。我已经在我的集合中进行了子类化,为这个特定的集合添加了一些自定义逻辑。

     fetch: function (options) {
        var opts = options || {};
        this.url = this.makeURL(opts);

        if (opts.reset) {
            this.refresh();
        } else if (this.finished) {
            return;
        }

        if (this.models.length && this.models[0].get("model_id")) {
            opts["remove"] = false;
            opts["merge"] = true;
        }

        opts["data"] = opts["data"] || {};
        opts["data"]["page"] = this.page;
        opts["data"]["status"] = opts.statusChange;
        opts["data"]["tags"] = opts.tags;
        opts["success"] = _.bind(this.triggerFetched, this);
        Backbone.Collection.prototype.fetch.call(this, opts);
    },

它位于if (this.models.length && this.models[0].get("model_id")),我觉得我做得非常糟糕。

我的收藏正在重置所有提取,所以我查看了主干代码,似乎我必须在我的提取选项中设置remove=false。在线主干文档似乎建议我可以将add=truereset=false设置为获取选项,以防止重置集合。出于某种原因,只将remove设置为false似乎对我有用,不确定这是否是因为子类化。

我正在检查attr model_id,因为看起来Collections在初始化时最初会自己调用fetch并设置某种对象(我相信另一个集合),因为它是最初的第一个模型。这很奇怪,我发现寻找我明确添加的模型之一就可以解决这个问题。

我也不确定是否应该明确地将merge设置为true。

由于

0 个答案:

没有答案