Javascript 每个控制器中的EventListener
我有一个Angular应用程序,使用Angular 1.7和ui路由器。在我的index.html中,我有Javascript 每个控制器中的EventListener,javascript,angularjs,Javascript,Angularjs,我有一个Angular应用程序,使用Angular 1.7和ui路由器。在我的index.html中,我有document.addEventListener('keyup',onKeyupVT)-事件不需要删除。在每个控制器中,我也有onkeyup事件(document.addEventListener('keyup',onkeyup))。我在index.html中有一个按钮(不在控制器中)。若按钮切换,我将在控制器中添加或删除onkeyup事件(不在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)
。它工作,但我需要写在每个控制器。那我该怎么办呢。感谢您的帮助如果控制器添加了文档范围的事件侦听器,则需要在销毁控制器时删除该侦听器
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);
};
})
这是防止内存泄漏和其他意外行为所必需的。如果控制器添加了文档范围的事件侦听器,则需要在销毁控制器时删除该侦听器
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);
};
})
这是防止内存泄漏和其他意外行为所必需的。好信息,在某种程度上是相关的;但是,它并没有完全解决问题和意图。i、 您是否建议O.P.继续在每个控制器中添加EventListener和处理程序?你看,问题更多的是关于最佳实践的调查,目的是避免样板代码,而不是其他任何东西else@BrettCaswell由于OP没有解释他在每个控制器中对事件侦听器所做的操作,因此很难推荐一个替代方案;但是,它并没有完全解决问题和意图。i、 您是否建议O.P.继续在每个控制器中添加EventListener和处理程序?你看,问题更多的是关于最佳实践的调查,目的是避免样板代码,而不是其他任何东西else@BrettCaswell由于OP没有解释他在每个控制器中对事件侦听器所做的操作,因此很难推荐替代方案。