使用init()调用或ng-init初始化数据?

时间:2017-06-22 08:09:16

标签: javascript angularjs

在我的AngularJS应用程序中,我必须初始化一些值onload。

我在脑海中写了一个函数init()

function init() {
    this.var = 'example';
}

在我的JS脚本末尾或init属性调用ng-init函数更好吗?

解决方案1 ​​

/* script.js */
function init() { /* instructions */ }
init();

解决方案2

/* script.js */
function init(){ // instructions // }}
// Not calling init() here

<!-- file.html -->
<div ng-controller="exampleCtrl as example" ng-init="example.init()">

2 个答案:

答案 0 :(得分:1)

如果要为使用它们的页面准备一些值,您是否正在使用控制器,对吗?因此,请使用内置方法进行此调用$onInit() ...

$onInit() {
  $scope.foo = 'some value';
  // Initialise other variables;
}

在AngularJS 1.5中为组件控制器添加了$onInit(),但它适用于所有控制器。

答案 1 :(得分:1)

来自ngInit docs

  

该指令可能被滥用以添加不必要的逻辑量   你的模板。 ngInit只有少数适​​当的用途,例如   至于别名ngRepeat的特殊属性,如演示中所示   下面;并通过服务器端脚本注入数据。除了这些   少数情况,你应该使用控制器而不是ngInit进行初始化   范围上的值

因此,当您有选择时,总是希望在控制器中初始化:解决方案1更好。

更广泛地说,就separation of concerns而言,我建议在控制器中编写逻辑。如果您有多个控制器使用的代码的公共部分,请将其移动到服务。这将极大地简化您的应用程序在成长过程中的可维护性。