何时使用AngularJS`$ onInit`生命周期挂钩
随着AngularJS V1.7的发布,已经不建议使用和取消预定义绑定的选项:
由于38f8c9,
指令绑定在构造函数中不再可用 。迁移代码:
* 如果指定
$compileProvider.preAssignBindingsEnabled(true)
,则需要首先迁移代码,以便将标志翻转到false
。有关如何执行此操作的说明,请参见
“从1.5迁移到1.6”指南。之后,删除该$compileProvider.preAssignBindingsEnabled(true)
语句。
由于bcd0d4的缘故,默认情况下在控制器实例上禁用了预分配绑定。
强烈建议迁移您的应用程序,使其不尽快依赖它。依赖于存在的绑定的初始化逻辑应该放在控制器的
$onInit()
方法中,保证在分配了绑定 之后 总是调用该方法。
将代码移至$onInit
生命周期挂钩的用例有哪些?什么时候才能将代码保留在控制器构造函数中?
-
当代码
$onInit
依赖于绑定时,必须在函数中移动代码,因为这些绑定this
在构造函数中不可用。它们在组件类的实例化之后被分配。示例:您具有如下状态定义:
$stateProvider.state("app", { url: "/", views: { "indexView": { component: "category" } }, resolve: { myResolve: (someService) => { return someService.getData(); } } });
您可以
myResolve
像这样将结果绑定到组件:export const CategoryComponent = { bindings: { myResolve: "<" }, controller: Category };
如果你现在退出
this.myResolve
在constructor
和$onInit
你会看到这样的事情:constructor() { console.log(this.myResolve); // <-- undefined } $onInit() { console.log(this.myResolve); // <-- result of your resolve }
因此,您的构造函数应仅包含如下构造代码:
constructor() { this.myArray = []; this.myString = ""; }
每个特定于角度的初始化和绑定或依赖项用法都应在
$onInit
-
何时使用componentWillReceiveProps生命周期方法?
2021-01-31 关注 0 浏览86 1答案
-
angularjs 1.x支持生命周期
2021-02-01 关注 0 浏览69 1答案
-
AngularJS控制器的生命周期是多少?
2021-02-02 关注 0 浏览70 1答案
-
AngularJS控制器的生命周期是多少?
2021-02-01 关注 0 浏览62 1答案
-
AngularJS 控制器的生命周期是什么?
2022-07-28 关注 0 浏览13 1答案
-
项目生命周期不同于产品生命周期,因为项目生命周期:
2022-05-21 关注 0 浏览28 1答案
-
AngularJS:$ q->延迟的API事物顺序(生命周期),谁调用摘要?
2021-02-01 关注 0 浏览72 1答案
-
根据生命周期理论,人的生命周期分为( )。
2021-04-15 关注 0 浏览97 1答案
-
从构造函数调用生命周期与生命周期方法
2021-01-31 关注 0 浏览191 1答案
-
Servlet生命周期和过滤器生命周期之间的区别
2021-01-30 关注 0 浏览103 1答案