使用angularjs,ngInit加载视图时,初始化范围值的正确方法是什么?

时间:2013-12-12 14:57:38

标签: javascript angularjs view angularjs-scope angularjs-ng-init

过去几周我一直在学习angularJs,并且正在研究一些大型应用程序,以了解现实世界中的工作原理。在大多数情况下,我注意到加载了一个视图:

ng-init="init()"

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

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

  

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

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

1 个答案:

答案 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";
})