【发布时间】:2013-08-02 09:34:58
【问题描述】:
我目前在我的一个项目中使用 AngularJS,但我不确定何时/是否需要手动将侦听器解除绑定到 $scope(或例如在指令的链接函数中时的范围)。
从不是最清楚的文档来看,我猜您不必取消绑定到当前范围内的任何侦听器,但我不确定您是否必须取消绑定到说的侦听器,例如 $rootScope。
任何关于组件生命周期的说明,如指令或指令的控制器,将不胜感激。
谢谢
【问题讨论】:
标签: angularjs
我目前在我的一个项目中使用 AngularJS,但我不确定何时/是否需要手动将侦听器解除绑定到 $scope(或例如在指令的链接函数中时的范围)。
从不是最清楚的文档来看,我猜您不必取消绑定到当前范围内的任何侦听器,但我不确定您是否必须取消绑定到说的侦听器,例如 $rootScope。
任何关于组件生命周期的说明,如指令或指令的控制器,将不胜感激。
谢谢
【问题讨论】:
标签: angularjs
Angular 为您处理。
当作用域被销毁时(例如,当通过 ng-view 指令加载新视图时,旧视图的作用域被销毁)它的所有子作用域都被销毁,并且它们的 $watchers 和 listeners 也通过 $on 注册。
$rootScope 在您的应用程序的生命周期内根本不会被销毁,因此您必须手动管理它的侦听器,但通常您在那里注册应该是永久性的东西。
当您通过 addEventListener 注册侦听器时,您必须手动删除它们,因为它不是通过 angular 管理的。
【讨论】: