AngualrJS纯ng-controller生命周期挂钩

时间:2018-08-14 14:07:35

标签: angularjs angular-controller angular-lifecycle-hooks

假设使用ng-controller指令声明的纯 AngualrJS(1.6.x)控制器(与组件控制器相反)。

它是否具有生命周期挂钩,例如$onInit$onDestroy

1 个答案:

答案 0 :(得分:1)

根据scope documentation (v1.6.10)中的范围生命周期部分,没有这样的挂钩(使用ng-controller方法)。

范围生命周期如下:

  1. 创作

根范围是由$injector在应用程序引导期间创建的。在模板链接期间,某些指令会创建新的子作用域。

  1. 观察者注册

在模板链接期间,指令在作用域上注册监视。这些手表将用于将模型值传播到DOM。

  1. 模型突变

要正确观察突变,应仅在scope.$apply()内进行突变。 AngularJS API隐式地执行此操作,因此在控制器中进行同步工作或与$apply$http$timeout服务进行异步工作时,不需要额外的$interval调用。

  1. 突变观察

$apply的结尾,AngularJS在根作用域上执行一个$digest循环,然后在整个子作用域中传播。在$digest周期内,将检查所有$watched表达式或函数是否存在模型突变,如果检测到突变,则会调用$watch侦听器。

  1. 范围破坏

当不再需要子范围时,子范围创建者有责任通过scope.$destroy() API销毁它们。这将阻止$digest调用传播到子作用域,并允许垃圾回收器回收子作用域模型使用的内存。


当然,您也可以始终使用$rootScope.Scope#$on收听更改。

示例:

$scope.$on('my-custom-event', function () {
// some code to execute when my-custom-event is fired
});

$scope.$on('$destroy', function () {
// some code to execute when the scope is destroyed
});