5

我目前在我的一个项目中使用 AngularJS,我不确定何时/是否需要手动将侦听器解除绑定到 $scope(或例如在指令的链接函数中时的范围)。

从不是最清楚的文档中,我猜您不必取消绑定到当前范围内的任何侦听器,但我不确定您是否必须取消绑定到例如 $ 上的侦听器例如 rootScope。

任何有关组件生命周期的说明,例如指令或指令的控制器,将不胜感激。

谢谢

4

1 回答 1

6

Angular 会为您处理。

当作用域被破坏时(例如,当通过 ng-view 指令加载新视图时,旧视图的作用域被破坏)它的所有子作用域都被破坏,并且它们的 $watchers 和 listeners 也通过 $on 注册。

$rootScope 在应用程序的生命周期内根本不会被破坏,因此您必须手动管理它的侦听器,但通常您在那里注册应该是永久性的东西。

当您通过 addEventListener 注册侦听器时,您必须手动删除它们,因为它不是通过 angular 管理的。

于 2013-08-02T09:42:56.520 回答