0

我是 angularJS 的新手,想为我的项目实现高效的东西,但被困在$onInit生命周期钩子)和activate().

4

2 回答 2

3

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

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

$onInit()- 在元素上的所有控制器都已构建并初始化其绑定之后(以及在此元素上的指令的前后链接函数之前)在每个控制器上调用。这是放置控制器初始化代码的好地方。

所以基本上activate(),一旦你的控制器被构建,这个函数就会被调用。成功绑定所有绑定$onInit()后将调用该函数。因此,如果您尝试在构造函数中访问绑定变量,它们将不会被初始化。

于 2018-08-17T17:06:10.517 回答
0

使用activate()是一个见仁见智的问题,因为它是一些固执己见的风格指南推荐的风格。

另一方面,$onInit 生命周期挂钩$compile服务调用。

从文档:

生命周期钩子

指令控制器可以提供以下由 AngularJS 在指令生命周期中调用的方法:

  • $onInit()- 在元素上的所有控制器都已构建并初始化其绑定之后(以及在此元素上的指令的前后链接函数之前)在每个控制器上调用。这是放置控制器初始化代码的好地方。

AngularJS $compile 服务 API 参考 - 生命周期钩子

于 2018-08-17T17:33:51.470 回答