将实例存储集成到Backbone Collection中

时间:2014-01-10 11:50:14

标签: javascript backbone.js backbone-collections

我在我的主干模型中添加了一个实例存储。当我手动创建一个具有id的对象时,它可以工作并返回一个新的或已经存在的模型。我如何将此功能集成到骨干集合中。 你能给我一个提示,我必须覆盖哪些方法/方法?

我的实例商店代码如下所示:

define(function(require) {
    var Backbone = require('backbone');
    return Backbone.Model.extend({
        constructor: function(attributes, options) {
            var id = attributes ? attributes.id : undefined;
            if(this.store[id])
                return this.store[id];
            Backbone.Model.prototype.constructor.apply(this, arguments);
            if(id)
                this.store[id] = this;
            this.count[id] = this.count[id] ? this.count[id] + 1 : 1;
        }
    });
});

我很感激任何想法或提示!

1 个答案:

答案 0 :(得分:0)

好吧,我发现了我的愚蠢错误。

如果有人对这种解决方案感兴趣:

像我一样覆盖构造函数没有任何问题。它就像一个魅力。您不必覆盖Backbone中的任何其他方法。

但是你必须正确设置集合的model-property。那是我的错。我没有。

define(function(require) {
    var Base = require('collections/base'),
        Category = require('models/category');

    return Base.extend({
        model: Category, //<-- Important!
        url: function() {
            return App.serverUrl + 'categories';
        },
        initialize: function() {
            this.fetch();
        }
    });
});