为什么在AngularJS中使用$ onInit?

时间:2018-02-01 22:50:45

标签: javascript angularjs

在AngularJS中,如果我可以在没有该函数的情况下进行相同的初始化,那么$onInit函数的目的是什么?

例如:

module.component("myComponent", {
        ...
        controller: function() {
            const $ctrl = this;

            $ctrl.$onInit = () => {
                $ctrl.var1 = "hello";
                $ctrl.var2 = { test: 3 };
            }
        }
    });

也可以这样做:

module.component("myComponent", {
        ...
        controller: function() {
            const $ctrl = this;

            $ctrl.var1 = "hello";
            $ctrl.var2 = { test: 3 };
        }
    });

是否存在需要$onInit的情况?

1 个答案:

答案 0 :(得分:3)

根据AngularJS docs

  

在构造了元素上的所有控制器并初始化其绑定之后(在此元素上的指令的前置和后置链接函数之前),在每个控制器上调用。

这给你两个保证:

  1. 此元素上的所有控制器都已构建
  2. 预先&该元素的帖子链接功能尚未执行
  3. 与您的第一种方法相反,这些方法都不能保证(尽管第二种方法高度可能)。

    此外,作为样式和可读性的问题,它使潜在的读者/审阅者非常清楚这是您作为开发人员打算在初始化此控制器时运行的代码。