在AngularJS V1.7发行版中,已预先弃用并删除了将绑定(bind)预先分配给该选项的选项:
当必须将代码移至 $onInit
Life-Cycle Hook时,有哪些用例?什么时候才能将代码保留在 Controller 构造函数中?
最佳答案
当代码依赖于绑定(bind)时,必须在$onInit
函数中移动代码,因为这些绑定(bind)在构造函数的this
中不可用。它们在组件类的实例化之后被分配。
例子:
您具有如下状态定义:
$stateProvider.state("app", {
url: "/",
views: {
"indexView": {
component: "category"
}
},
resolve: {
myResolve: (someService) => {
return someService.getData();
}
}
});
您可以像这样将
myResolve
的结果绑定(bind)到您的组件: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 = "";
}
每个特定于 Angular 的初始化和绑定(bind)或依赖项用法都应在
$onInit
中关于angularjs - 何时使用AngularJS `$onInit`生命周期 Hook ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51273521/