Warm tip: This article is reproduced from serverfault.com, please click

javascript-angularjs控制器中的window.addEventListener导致调用两次或多次

(javascript - window.addEventListener in angularjs controller cause to call twice or more)

发布于 2020-11-26 11:43:56

window.addEventListener在AngularJs控制器中使用了绑定事件监听器,但是问题是当我进入另一个状态并返回到该状态时,由于多次绑定事件监听器,事件监听器函数被调用两次并重复。

这是我的控制器代码:

window.addEventListener("message", receivePosMessage, false);

我想在receivePosMessage之后调用window.postMessage所以我习惯了addEventListener我怎么解决这个问题?

更新

我也添加了window.removeEventListener("message", receivePosMessage, false);addEventListener但是没有用!

Questioner
Rasool Ghafari
Viewed
0
Rasool Ghafari 2020-11-29 01:34:07

通过将以下代码添加到控制器中,解决了该问题:

$scope.$on('$destroy', function() {
    window.removeEventListener("message", receivePosMessage, false);
});

该解决方案由亲爱的@ cody-mikol提供