代码之家  ›  专栏  ›  技术社区  ›  mpasko256

AngualRJS纯NG控制器生命周期挂钩

  •  2
  • mpasko256  · 技术社区  · 6 年前

    假设一个纯粹的 安古尔JS(1.6.x) 控制器声明使用 ng-controller 指令(与组件控制器相反)。

    它有生命周期挂钩吗? $onInit $onDestroy ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   lealceldeiro VonC    6 年前

    根据章节 范围生命周期 scope documentation (v1.6.10) 没有这样的钩子( 使用 ng-controller 方法 )

    作用域生命周期如下:

    1. 创造

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

    1. 观察者注册

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

    1. 模型突变

    为了正确观察突变,您应该只在 scope.$apply() . AngularJS API隐式执行此操作,因此没有额外的 $apply 在控制器中执行同步工作或使用 $http , $timeout $interval 服务。

    1. 突变观察

    结束时 申请美元 ,AngularJS执行 $digest 在根作用域上循环,然后在所有子作用域中传播。在 $摘要 循环,全部 $watched 对表达式或函数进行模型突变检查,如果检测到突变,则 $watch 调用侦听器。

    1. 范围破坏

    当不再需要子范围时,子范围创建者有责任通过 scope.$destroy() 应用程序编程接口。这将停止传播 $摘要 调用子作用域并允许垃圾收集器回收子作用域模型使用的内存。


    当然,你也可以随时使用 $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
    });