我是angularJS的新手,想为我的项目实现高效的功能,但陷入$onInit
(life cycle hook)和activate()
之间的麻烦。
答案 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