2016-11-30 43 views
1

我正在开发一个用于进行在线测验的Web应用程序。我正在使用这个平均堆栈。在我的在线测试控制器,我已经使用了许多事件侦听器,如以角度添加控制器特定文档eventlistener

document.addEventListener("visibilitychange", onchange); 
document.webkitIsFullScreen etc.. 

但我的问题是,这一功能转移到其他控制器,因为这是全球eventLisners后仍在执行。

任何人都可以建议我最好的方法吗?

回答

1

您需要删除事件侦听器时的范围被破坏或者你把它移动到其它控制器之后':

$scope.$on('$destroy',function() { 
    document.removeEventListener('visibilitychange',onchange); 
}); 

它总是一个好主意来处理移除事件侦听器时的组件被破坏,特别是对于大型应用程序,因为这可能是单页应用程序的内存泄漏问题的主要原因。

+0

谢谢bluetoft。 将这个逻辑写入控制器是否是一个好习惯? 或者我可以使用指令或服务吗? –

+0

@kiranGopal我通常在控制器中连接这种东西,但是如果你做得足够的话,可以看到你可以轻松地编写一个服务来处理它。 – bluetoft