我有一个使用Angular 1.7和ui-router的Angular应用程序。在我的index.html中,我有document.addEventListener('keyup',onKeyupVT)
-事件永远不需要删除。在每个控制器中,我还具有onkeyup事件(document.addEventListener('keyup',onKeyup)
)。我在index.html中有一个按钮(不在控制器中)。如果按钮切换,我将在控制器中添加或删除onkeyup事件(不在index.html中)。
我在每个控制器中尝试$rootScope.on('Event' + n, function(e,data){ //... })
并致电$rootScope.emit('Event' + n,data)
。它可以工作,但是我需要在每个控制器中编写它。所以我该怎么做。谢谢您的帮助
答案 0 :(得分:0)
如果控制器添加了文档范围的事件侦听器,则在销毁控制器时需要删除该侦听器。
app.controller("ctrl", function($document) {
$document.on("keyup",onKeyup);
function onKeyup(ev) {
console.log(ev);
}
//REMOVE event listeners
this.$onDestroy = function () {
$document.off("keyup",onKeyup);
};
})
这是必要的,以防止内存泄漏和其他意外行为。