Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 删除绑定到的对象后,如何解除事件处理程序的绑定?_Backbone.js - Fatal编程技术网

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...
});

请不要使用问题标题来标记您的问题。请改用标记系统。请不要使用问题标题标记您的问题。改用标签系统。使用前一个属性是个好主意。谢谢有什么方法可以测试解除绑定是否真的有效,并且我没有任何挂起处理程序?使用前一个属性是一个好主意。谢谢有没有什么方法可以测试解绑是否真的有效,并且我没有任何悬挂手柄?