假设使用指令声明的纯AngualrJS (1.6.x)控制器ng-controller
(与组件控制器相反)。
它有生命周期钩子吗$onInit
?$onDestroy
假设使用指令声明的纯AngualrJS (1.6.x)控制器ng-controller
(与组件控制器相反)。
它有生命周期钩子吗$onInit
?$onDestroy
根据范围文档(v1.6.10)中的范围生命周期部分,没有这样的钩子(使用方法)。ng-controller
范围生命周期将如下所示:
根范围是在应用程序引导期间由$injector
. 在模板链接期间,一些指令会创建新的子作用域。
在模板链接期间,指令在作用域上注册监视。这些监视将用于将模型值传播到 DOM。
为了正确观察突变,您应该只在scope.$apply()
. $apply
AngularJS API 会隐式执行此操作,因此在控制器中进行同步工作或使用或服务进行异步工作$http
时不需要额外的调用。$timeout
$interval
在结束时$apply
,AngularJS$digest
在根作用域上执行一个循环,然后传播到所有子作用域。在$digest
循环期间,检查所有$watched
表达式或函数的模型突变,如果检测到突变,$watch
则调用侦听器。
当不再需要子作用域时,子作用域创建者有责任通过scope.$destroy()
API 销毁它们。这将停止将调用传播$digest
到子范围,并允许垃圾收集器回收子范围模型使用的内存。
当然,或者,您始终可以使用$rootScope.Scope#$on
for 监听变化。
例子:
$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
});