Backbone不为获取的模型提取调用构造函数吗?

时间:2015-10-05 11:21:56

标签: javascript backbone.js typescript

似乎Backbone集合fetchparse函数都没有为检索到的模型调用构造函数;我对吗?因此,如果需要为它们初始化一些特殊属性(在构造函数或初始化程序中),则必须显式调用它。例如,在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属性。

对其他人来说可能是显而易见的。

1 个答案:

答案 0 :(得分:0)

如果您只是将模型类链接到集合的model option,那么一切都将自行完成。

var MyModel = Backbone.Model.extend({});

var MyCollection = Backbone.Colleciton.extend({
    url: "/api/MyModels/",
    model: MyModel
});

当将获取MyCollection的实例并且后端将有一组模型时,它将创建所需数量的MyModel实例。