gpt4 book ai didi

javascript - 无法在 Backbone 模型上调用自定义方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:18:16 26 4
gpt4 key购买 nike

我的模型和收藏看起来像这样。

var MyModel= Backbone.Model.Extend({

foo: function(){
alert("is not working...");
}
});

var MyCol = Backbone.Collection.extend({

models:MyModel,
url: function(){ return '/json_from_server' }, //json data mapped to MyModel
poo:function(){
alert("this works");
}
});

cols = new MyCol();

cols.fetch({

success:function () {
cols.poo(); //this works fine
cols.models.forEach(function(item){
alert(item.get("id")); //It works fine
alert(item.foo()); // this is not working...
});
}
});

当调用 item.foo() 时,浏览器抛出错误:Uncaught TypeError: Object [object Object] has no method 'foo'谁能帮我弄清楚这里出了什么问题。

最佳答案

在您的 MyCol 对象中,您设置了 models: MyModel。我认为模型不应该是复数,所以它应该是 model: MyModel

如果仍然不起作用,您可能需要在 MyModel 中使用 _.bindAll,如下所示:

var MyModel= Backbone.Model.Extend({
initialize: function() {
_.bindAll(this, "foo");
},
foo: function(){
alert("is not working...");
}
});

你的初始化没有更早工作的原因是因为如上所述,当它应该只是 model 时,你有复数形式的“models”。

关于javascript - 无法在 Backbone 模型上调用自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495016/

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