5

在过去的几周里,我一直在学习 angularJs,并一直在研究一些大型应用程序,以了解事物在现实世界中是如何工作的。在大多数情况下,我注意到加载视图时:

ng-init="init()"

即在相关控制器中调用函数init()。用于设置初始值。

但是(大但是)在阅读 ngInit 上的角度文档时,我看到了一个相当严厉的描述:

“ngInit 的唯一适当用途是对 ngRepeat 的特殊属性进行别名化,如下面的演示所示。除了这种情况,您应该使用控制器而不是 ngInit 来初始化作用域上的值。”

所以我的问题是,加载视图时使用 ngInit 初始化范围内的值是不好的做法吗?如果是这样,这是为什么呢?什么是正确的方法?

4

1 回答 1

7

It is bad practice because the view is initialized at a different time than the controller AND the digest cycle has to process that function, which is an unnecessary addition to that cycle. I assume you have something like:

View:

<div ng-init="init()">
 <span>{{thing}}</span>
</div>

Controller:

Module.controller('viewController', function(scope){
    ...
    var init = function(){
     scope.thing = "123";
     ...
    }
    ...
})

The better practice is to do this:

View:

<div>
 <span ng-bind="thing"></span>
</div>

Controller:

Module.controller('viewController', function(scope){
 scope.thing = "123";
})
于 2013-12-12T15:11:39.717 回答