在AngularJS中,“ $ onInit”比“激活”更有效的方法是激活“控制器”吗?

时间:2018-08-17 15:18:27

标签: angularjs angularjs-controller angularjs-compile angularjs-lifecycle

我是angularJS的新手,想为我的项目实现高效的功能,但陷入$onInitlife cycle hook)和activate()之间的麻烦。

2 个答案:

答案 0 :(得分:2)

在控制器内部创建activate()函数并直接调用它与使用AngularJS提供的$onInit()生命周期挂钩完全不同。

来自https://docs.angularjs.org/guide/component#component-based-application-architecture

  

$onInit()-在构造一个元素上的所有控制器并初始化它们的绑定之后(并且在此元素上的指令的pre和post链接功能之前),在每个控制器上调用。这是放置控制器初始化代码的好地方。

因此,基本上activate()函数将在构造控制器后立即调用。在所有绑定成功绑定之后,在{strong>之后将调用$onInit()函数。因此,如果您尝试在构造函数中访问绑定变量,则它们将尚未初始化。

答案 1 :(得分:0)

使用activate()是一个意见问题,因为它是某些 opinionated 样式指南建议的样式。

另一方面,$onInit服务将调用$compile Life-Cycle Hook

从文档中:

  

生命周期挂钩

     

指令控制器可以提供以下指令,这些指令由AngularJS在指令生命周期的各个点调用:

     
      
  • $onInit()-在构造一个元素上的所有控制器并初始化它们的绑定之后(并且在此元素上的指令的链接前和链接后),在每个控制器上调用。这是放置控制器初始化代码的好地方。
  •   
     

AngularJS $compile Service API Reference - Life-Cycle Hooks