触发函数中的骨干悬空事件回调

时间:2014-07-30 11:21:04

标签: javascript jquery backbone.js

我有playerWrapper模型触发playing事件,如下所示:

playerWrapper.trigger('playing')

然后,在名为popupView的单独窗口视图中,我在initialize上收听该事件:

this.listenTo(playerWrapper, 'playing', function() {
  doSomething()
});  

我的应用程序的一个特点是它是一个chrome扩展,分为两个 windows ,一个弹出窗口和一个后台窗口。它们使用chrome运行时方法相互通信。我遇到的问题是每当我关闭弹出窗口并重新打开它时,上面的trigger都会抛出以下错误:

Uncaught TypeError: Cannot read property '0' of undefined

我调试并将其固定到Backbone源代码的triggertriggerEvents函数。 triggerEvents函数接受events参数,这是一个事件回调列表。就我而言,列表中应该只有一个回调。但是,每次重新打开弹出窗口时,我都会在events参数内堆叠一个重复的事件回调,这导致了问题。我怀疑这是由dangling Backbone views造成的,通常被称为zombie views所以我在this.stopListening()函数上尝试了popupView.initialize(),但我没有运气。

有没有人对这个问题有所了解? 谢谢。

0 个答案:

没有答案