在我的AngularJS应用程序中,我必须初始化一些值onload。
我在脑海中写了一个函数init()
。
function init() {
this.var = 'example';
}
在我的JS脚本末尾或init
属性调用ng-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()">
答案 0 :(得分:1)
如果要为使用它们的页面准备一些值,您是否正在使用控制器,对吗?因此,请使用内置方法进行此调用$onInit() ...
$onInit() {
$scope.foo = 'some value';
// Initialise other variables;
}
在AngularJS 1.5中为组件控制器添加了$onInit(),但它适用于所有控制器。
答案 1 :(得分:1)
来自ngInit
docs:
该指令可能被滥用以添加不必要的逻辑量 你的模板。 ngInit只有少数适当的用途,例如 至于别名ngRepeat的特殊属性,如演示中所示 下面;并通过服务器端脚本注入数据。除了这些 少数情况,你应该使用控制器而不是ngInit进行初始化 范围上的值。
因此,当您有选择时,总是希望在控制器中初始化:解决方案1更好。
更广泛地说,就separation of concerns而言,我建议在控制器中编写逻辑。如果您有多个控制器使用的代码的公共部分,请将其移动到服务。这将极大地简化您的应用程序在成长过程中的可维护性。