これらのスニペットを考えると(この質問に対して十分に完全であることを願っています)...
ModelA.js (多くの modelB があります):
ModelBs = (function(_super) {
ModelB.prototype.bWithName = function(name) {
return this.find(function (b) {
return b.name == name;
});
}
})(Backbone.Collection);
return ModelA = (function(_super) {
...
ModelA.prototype.initialize = function() {
this.modelbs = new ModelBs(this.modelbs, {});
};
ModelA.prototype.bWithName = function(name) {
return this.modelbs.bWithName(name);
};
return modelA;
})(BaseModel);
ModelC.js (1 つのモデル A があります):
ModelC.prototype.toString = function(opts) {
...
console.log(this.modelA); // defined...
console.log(this.modelA.modelBs); // defined...
console.log(this.modelA.bWithName("foo")); // undefined
...
}
ModelC.js では、なぜthis.modelA
とがthis.modelA.modelBs
定義されているのにthis.modelA.bWithName()
未定義なのですか? どうすれば修正できますか?
これは動作します: this.modelA.modelBs.first()
.
これは undefined: を返しますthis.modelA.modelBs.where({name:"foo"})
。
Web コンソールでは、これが機能します: modelZ.modelAs.first().bWithName("foo").attributes
.
アクセサーやメソッドは一般に、他のモデルでは利用できませんか?
ありがとう-