Javascript 在Backbone.js中从视图中解除模型绑定

Javascript 在Backbone.js中从视图中解除模型绑定,javascript,jquery-mobile,backbone.js,Javascript,Jquery Mobile,Backbone.js,我有一个音频播放器类,它控制HTML5音频播放器。因为我正在监视音频播放器事件并将它们触发到相关视图。在视图文件上,这是绑定适当事件的方式 app.audioPlayer.$el.bind('musicEnded', _.bind(this.onMusicEnded, this)); app.audioPlayer.$el.bind('askForNextMusic', _.bind(this.onAskForNextMusic, this)); app.audioPlayer.$el.bind

我有一个音频播放器类,它控制HTML5音频播放器。因为我正在监视音频播放器事件并将它们触发到相关视图。在视图文件上,这是绑定适当事件的方式

app.audioPlayer.$el.bind('musicEnded', _.bind(this.onMusicEnded, this));
app.audioPlayer.$el.bind('askForNextMusic', _.bind(this.onAskForNextMusic, this));
app.audioPlayer.$el.bind('askForPreviousMusic', _.bind(this.onAskForPreviousMusic, this));
一旦我从这个视图中移出,我想从这个视图中解除事件的绑定。我就是为了这个

app.audioPlayer.$el.unbind('musicEnded', _.bind(this.onMusicEnded, this));
app.audioPlayer.$el.unbind('askForNextMusic', _.bind(this.onAskForNextMusic, this));
app.audioPlayer.$el.unbind('askForPreviousMusic', _.bind(this.onAskForPreviousMusic, this));
但它似乎有任何效果。如何在backbonejs中正确执行此操作? 谢谢

将回调函数绑定到对象。无论何时触发事件,都将调用回调

object.on(event, callback, [context])
从对象中删除以前绑定的回调函数

object.off([event], [callback], [context])

代码的问题是,您使用
\uu.bind
绑定/解除绑定。因为这将始终创建一个新函数。因此,绑定的函数和尝试解除绑定的函数不相同,因此解除绑定将不起作用

您必须保存对绑定函数的引用,或者在开始时使用
.bindAll
,因为这将用绑定函数替换当前函数。因此,无论何时使用绑定/取消绑定,它都是相同的功能:

_.bindAll(this, onMusicEnded) 
// the will replace this.onMusicEnded with _.bind(this.onMusicEnded, this)
app.audioPlayer.$el.bind('musicEnded', this.onMusicEnded);
app.audioPlayer.$el.unbind('musicEnded', this.onMusicEnded);

我试过了,但没用。你能看看我绑定的方式并告诉我有什么问题吗?@Zach如果你能发布你想要执行的实际代码,如果你有更多的示例代码来说明你想要完成什么,我们可能会提供更多的帮助。问题是他尝试解除绑定的函数与绑定的函数不同
on
off
只是
bind
unbind
的别名。如果您有更多示例代码来说明您试图完成的任务,我们可能会提供更多帮助。您为什么不使用?你也尝试过这些活动吗?