似乎Backbone集合fetch
和parse
函数都没有为检索到的模型调用构造函数;我对吗?因此,如果需要为它们初始化一些特殊属性(在构造函数或初始化程序中),则必须显式调用它。例如,在success
函数的fetch
回调中。或者我可能会错过什么?
示例如下。
return t.collection.fetch({
success: function () {
for (var i = 0; i < t.collection.models.length; i++) {
t.collection.models[i] = new MyModel(t.collection.models[i]);
}
},
});
此处t.collection
的类型为
class MyModelsCollection extends Backbone.Collection<MyModel> {
url = "/api/MyModels/";
}
已使用TypeScript。
解决方案即可。 The answer让我检查这里使用的TypeScript语法。我发现这是不正确的。它必须与this answer类似(除了super()
调用应该先行)。因此,应该在构造函数中手动设置集合的model
属性。
对其他人来说可能是显而易见的。
答案 0 :(得分:0)
如果您只是将模型类链接到集合的model
option,那么一切都将自行完成。
var MyModel = Backbone.Model.extend({});
var MyCollection = Backbone.Colleciton.extend({
url: "/api/MyModels/",
model: MyModel
});
当将获取MyCollection
的实例并且后端将有一组模型时,它将创建所需数量的MyModel实例。