gpt4 book ai didi

javascript - 重置 Backbone 集合绑定(bind)功能

转载 作者:行者123 更新时间:2023-11-28 01:35:03 26 4
gpt4 key购买 nike

非常基本的问题,但我似乎无法弄清楚为什么我无法将方法绑定(bind)到集合上的重置事件。

HealthcheckList = Backbone.Collection.extend({

model: Healthcheck,
url: "/corsettiServices/rest/healthcheck/sort",

initialize: function() {
_.bindAll(this, "fetchSuccess", "addAll");
console.log("Initializing view");
this.on('reset', addAll);
this.fetch({data: {type:'all'}, processData:true, success: this.fetchSuccess, reset: true});
},

addAll: function(m, options) {
alert("adding");
},

fetchSuccess: function(m, response) {
alert("success");
console.log(m);
m.each(function(h) {
if (h.get("start")!=null) {
$('#statusTable > tbody:last').append('<tr><td>' + h.get("start") + '</td><td>' + h.get("type") + '</td><td>' + h.get("status") + '</td></tr>');
}
})
}
})

这会引发错误:Uncaught ReferenceError:addAll 未定义。删除与“重置”事件的绑定(bind)可以使数据获取和代码正常工作,但我想在每次重置集合时进行更多处理。关于如何在 Backbone Collection 中定义函数,我缺少什么?

最佳答案

this.on("reset", this.addAll);

您要小心范围。初始化函数将绑定(bind)到“this”,这将是在某个时刻实例化的新对象。但在初始化函数的范围内,addAll 是未定义的,因为您在“this”尚不存在的范围内编写此内容。最终 addAll 属性将绑定(bind)到“this”,但这里 addAll 是您传递给扩展的新对象的属性,它指向一个匿名函数。

关于javascript - 重置 Backbone 集合绑定(bind)功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635603/

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