我在我的主干模型中添加了一个实例存储。当我手动创建一个具有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;
}
});
});
我很感激任何想法或提示!
答案 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();
}
});
});