gpt4 book ai didi

javascript - 为什么我的主干模型奇怪地嵌套在集合中,需要深入访问方法/属性?

转载 作者:行者123 更新时间:2023-12-02 19:08:07 24 4
gpt4 key购买 nike

我有一个集合和一个模型,两者都使用属性/选项来增强它们的附加功能。这是模型(LoadRouteGroup):

return Backbone.Model.extend({
initialize: function () {
console.log(this);
},
fetchf: function () {
console.log("FETCH");
}
});

和集合(LoadRouteGroups):

return Backbone.Collection.extend({
constructUrl: function(options) {
if (options.groupingType === "facility") {
// TODO: new endpoint: /api/v1/loadroutes?grouping=facility
this.url = clawConfig.endpoints.webApiRootUrl + "/api/loads/facilities";
}
else {
this.url = clawConfig.endpoints.webApiRootUrl + "/api/v1/loadroutes";
}
},
initialize: function (models, options) {
options || (options = {});

this.constructUrl(options);

console.log(this);
}
});

它们的实例化如下:

var loadRouteGroup = new LoadRouteGroup({
entityType: "facility"
});

// WORKS
loadRouteGroup.fetchf();

// assign groupingType option to collection to denote which URL to use
var loadRouteGroups = new LoadRouteGroups({
model: loadRouteGroup
}, {
groupingType: "facility"
});

var firstGroup = loadRouteGroups.at(0);

// DOESN'T WORK
firstGroup.fetchf();

// WORKS
firstGroup.attributes.model.fetchf();

我希望对 firstGroup.fetchf() 的调用能够工作......但事实并非如此。相反,我必须奇怪地向下钻取并使用 firstGroup.attributes.model.fetchf() 才能访问该方法。

这是怎么回事?这对我来说似乎很简单,但我一生都无法弄清楚我的 Collection 和 Model 之间的关系出了什么问题。

最佳答案

集合定义应包含模型类型:

return Backbone.Collection.extend({
// ....
model: LoadRouteGroup
});

初始化集合时,传入模型数组:

var loadRouteGroup = new LoadRouteGroup({
entityType: "facility"
});
var loadRouteGroups = new LoadRouteGroups([loadRouteGroup], {
groupingType: "facility"
});

关于javascript - 为什么我的主干模型奇怪地嵌套在集合中,需要深入访问方法/属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com