コレクションとモデルがあり、どちらも属性/オプションを使用して追加機能で拡張しています。モデル ( 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()
代わりに、メソッドにアクセスするために、奇妙にドリルダウンして使用する必要があります。
何が起きてる?これは私には簡単に思えますが、コレクションとモデルの関係のどこが悪いのか、一生わかりません。