Backbone.js - 无法从模型中访问其他模型的方法?

时间:2012-10-05 16:35:19

标签: javascript backbone.js

考虑到这些片段(希望这个问题足够完整)......

ModelA.js(有很多modelBs):

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(有一个modelA):

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.modelAthis.modelA.modelBs,但this.modelA.bWithName()未定义,以及如何解决?

这有效:this.modelA.modelBs.first()

返回undefined:this.modelA.modelBs.where({name:"foo"})

在Web控制台中,这有效:modelZ.modelAs.first().bWithName("foo").attributes

访问者或方法通常不能通过其他模型获得吗?

谢谢 -

1 个答案:

答案 0 :(得分:0)

呸。该方法实际上是可用的,但严格等于(===)正在杀死搜索。在一个例子中,我试图使用错误的名称类型进行搜索。

感谢您输入!