window.addEventListener in angularjs 控制器导致调用两次或更多次

window.addEventListener in angularjs controller cause to call twice or more

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

这是我的控制器代码:

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

我想 receivePosMessagewindow.postMessage 之后调用。所以我用了addEventListener。 我该如何解决这个问题?

更新

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

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

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

亲爱的@cody-mikol给出了这个解决方案。