繁体   English   中英

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

[英]correct way to initialise scope values when the view is loaded with angularjs, ngInit?

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

ng-init="init()"

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

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

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

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

这是不好的做法,因为视图在与控制器不同的时间初始化,并且摘要周期必须处理该功能,这是该周期的不必要的添加。 我假设你有类似的东西:

视图:

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

暂无
暂无

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

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