在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.myResolveconstructor中的$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/

10-10 17:23