过去几周我一直在学习angularJs,并且正在研究一些大型应用程序,以了解现实世界中的工作原理。在大多数情况下,我注意到加载了一个视图:
ng-init="init()"
即。函数init()在相关控制器中调用。用于设置初始值。
但是(很大但是)在阅读ngInit上的角度文档时,我看到了一个相当严厉的描述:
“ngInit唯一合适的用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,你应该使用控制器而不是ngInit来初始化作用域上的值。”
所以我的问题是, 在加载视图时使用ngInit初始化作用域中的值是不好的做法吗? 如果是这样,为什么会这样?什么是正确的方法?
答案 0 :(得分:7)
这是不好的做法,因为视图在与控制器不同的时间初始化,并且摘要周期必须处理该功能,这是该周期的不必要的添加。我假设你有类似的东西:
查看:
<div ng-init="init()">
<span>{{thing}}</span>
</div>
控制器:
Module.controller('viewController', function(scope){
...
var init = function(){
scope.thing = "123";
...
}
...
})
更好的做法是这样做:
查看:
<div>
<span ng-bind="thing"></span>
</div>
控制器:
Module.controller('viewController', function(scope){
scope.thing = "123";
})