Javascript 触发器函数中的主干悬挂事件回调
我有一个Javascript 触发器函数中的主干悬挂事件回调,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个playerRapper模型,它可以触发播放事件,如下所示: playerRapper.trigger('playing') 然后,在一个名为popupView的单独窗口视图中,我监听initialize上的事件: this.listenTo(playerWrapper, 'playing', function() { doSomething() }); 我的应用程序的一个特点是它是一个chrome扩展,分为两个窗口,一个弹出窗口和一个背景窗口。它们使用chrome运行时方法相
playerRapper
模型,它可以触发播放
事件,如下所示:
playerRapper.trigger('playing')
然后,在一个名为popupView
的单独窗口视图中,我监听initialize
上的事件:
this.listenTo(playerWrapper, 'playing', function() {
doSomething()
});
我的应用程序的一个特点是它是一个chrome扩展,分为两个窗口,一个弹出窗口和一个背景窗口。它们使用chrome运行时方法相互通信。我遇到的问题是,每当我关闭弹出窗口并重新打开它时,上面的触发器就会抛出以下错误:
未捕获类型错误:无法读取未定义的属性“0”
我调试并将其固定到主干源代码的trigger
和triggerEvents
函数中triggerEvents
函数接受events
参数,该参数是事件回调的列表。在我的例子中,列表中应该只有一个回调。但是,每次我重新打开弹出窗口时,都会在events
参数中得到一个重复的事件回调,这就是问题的根源。我怀疑这是由于悬挂主干视图
引起的,这些视图通常被称为僵尸视图
,所以我尝试了这个功能。在popupView.initialize()
函数上停止侦听()
有人对这个问题有见解吗?
谢谢。你为什么称一个模型为听起来不对的“包装器”。您是否只是将这些变量放在全局窗口范围内?正如@kharandziuk所说,listenTo的第一个参数是一个模型,而不是一个字符串。抱歉,这只是一个书写错误。我在听一个模特。此外,在这种情况下将其称为包装器也是有意义的,因为对象是由第三方API提供的。我将模型连接到全局空间,因为它是一个chrome扩展。。有什么想法吗?:)