Backbone.js 删除绑定到的对象后,如何解除事件处理程序的绑定?
我有以下情况: 我有一个模型,它有一个属性,就是模型本身。 在我看来,我是这样绑定到子模型的:Backbone.js 删除绑定到的对象后,如何解除事件处理程序的绑定?,backbone.js,Backbone.js,我有以下情况: 我有一个模型,它有一个属性,就是模型本身。 在我看来,我是这样绑定到子模型的: this.listenTo(this.model.get("childModel"), "change", this.handleChange); 现在我有一个例子,由于用户操作,子模型可以从某个控制器取消设置。在这种情况下,我想解除上述处理程序的绑定 在函数stopListening的Backbone.js文档中,它说: 停止侦听([其他],[事件],[回调]) 告诉对象停止侦听事件。要么停止收听
this.listenTo(this.model.get("childModel"), "change", this.handleChange);
现在我有一个例子,由于用户操作,子模型可以从某个控制器取消设置。在这种情况下,我想解除上述处理程序的绑定
在函数stopListening的Backbone.js文档中,它说:
停止侦听([其他],[事件],[回调])
告诉对象停止侦听事件。要么停止收听
没有参数使对象删除其所有已注册的
回调。。。或者更准确地说,告诉它只删除
它在特定对象或特定事件上侦听的事件,
或只是一个特定的回调
因此,当该子模型未设置时,我尝试在我的视图中执行此操作:
this.stopListening(this.handleChange);
从医生那里,我认为这是有效的,但我从主干网那里得到了一个错误
所以现在我试着这样做:
this.stopListening(null, "change", this.handleChange);
这不会导致错误,但我如何才能确保它真的工作?如果要传递参数(也就是说,只要不想删除所有侦听器,
stopListening
方法的object
参数是必需的。所以你必须得到你取消设置的模型
例如,您可以做的是使视图侦听父模型的childModel
更改,以便在取消设置侦听器后立即删除它:
this.listenTo(this.model, 'change:childModel', function(m, v, opt) {
if(opt.unset)
this.stopListening(m.previous('childModel'), 'change'); //not sure if you need the second argument, think not...
});
如果要传递参数(也就是说,只要不想删除所有侦听器,
stopListening
方法的object
参数是必需的。所以你必须得到你取消设置的模型
例如,您可以做的是使视图侦听父模型的childModel
更改,以便在取消设置侦听器后立即删除它:
this.listenTo(this.model, 'change:childModel', function(m, v, opt) {
if(opt.unset)
this.stopListening(m.previous('childModel'), 'change'); //not sure if you need the second argument, think not...
});
请不要使用问题标题来标记您的问题。请改用标记系统。请不要使用问题标题标记您的问题。改用标签系统。使用前一个属性是个好主意。谢谢有什么方法可以测试解除绑定是否真的有效,并且我没有任何挂起处理程序?使用前一个属性是一个好主意。谢谢有没有什么方法可以测试解绑是否真的有效,并且我没有任何悬挂手柄?