0

これらのスニペットを考えると(この質問に対して十分に完全であることを願っています)...

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.

アクセサーやメソッドは一般に、他のモデルでは利用できませんか?

ありがとう-

4

1 に答える 1

0

ああ。メソッドは実際に利用可能でしたが、厳密な等号 ( ===) が検索を殺していました。ある例では、間違ったタイプの名前で検索しようとしていました。

しかし、入力していただきありがとうございます!

于 2012-10-05T17:07:46.670 に答える