繁体   English   中英

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

[英]Initialize data with init() call or ng-init?

在我的AngularJS应用中,我必须在加载时初始化一些值。

我在这种情况下编写了一个函数init()

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

在我的JS脚本末尾或使用ng-init属性调用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()">

如果这将初始化一些值以准备使用它们的页面,那么您将使用控制器,对吗? 所以为此使用内置方法$ onInit() ...

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

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

ngInit文档

可以滥用此指令在模板中添加不必要的逻辑量 ngInit只有少数适​​当的用法,例如别名ngRepeat的特殊属性,如下面的演示所示; 以及通过服务器端脚本注入数据。 除了这几种情况, 您应该使用控制器而不是ngInit来初始化scope上的值

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


更广泛地说,就关注点分离而言,我建议您在控制器中编写逻辑。 如果您有多个控制器使用的通用代码部分,请将其移至服务。 这在成长时将大大简化应用程序的可维护性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM