我正在尝试在我的模型中对自己进行listenTo绑定,但无法使其工作。我不确定我做错了什么:
initialize: function() {
this.listenTo(this, "change:projectData", this.processData);
}
setProject: function(id) {
//do async call and get someData variable
this.set('projectData', someData);
}
processData: function(data) {
debugger; //not triggering
}
答案 0 :(得分:-2)
目前,您的视图/模型仅侦听名为"更改:projectData" (尽管documentation suggests otherwise。我也不能以这种方式工作),而不是改变事件本身。要让它听取特定事件,您必须将this.trigger("change:projectData");
添加到setProject-function。
initialize: function() {
this.listenTo(this, "change:projectData", this.processData);
}
setProject: function(id) {
this.set('projectData', someData);
this.trigger("change:projectData");
}
processData: function(data) {
debugger; //not triggering
}
我强烈建议您使用listenTo而不是任何其他jQuery的事件侦听器,因为它可以更轻松,更安全地一次取消绑定所有eventlisteners。当你想要停止聆听时,只需致电this.stopListening();
,你就应该免受memoryleaks的攻击。</ p>
答案 1 :(得分:-2)
您需要触发事件change:projectData
所以这段代码:
setProject: function(id) {
//do async call and get someData variable
this.set('projectData', someData);
}
应该是这样的:
setProject: function(id) {
//do async call and get someData variable
this.trigger('change:projectData', someData);
//or Backbone.trigger(...)
}