使用angularJs初始化范围变量

时间:2017-01-11 15:40:32

标签: javascript angularjs angularjs-ng-init

我总是使用ng-init="controllerFunction()"从服务器获取数据并将其显示在表格,图表或其他任何内容上,并且需要在每次加载页面时调用它。

现在使用ng-init正在完成这项工作,但这是最佳做法吗?

2 个答案:

答案 0 :(得分:1)

ng-init主要用于将数据传递给init方法,例如razor数据(ng-init="someControllerFunction(@Model.ServerSideData))。如果您没有传递任何数据,您可以直接在控制器中执行:

function myCtrl($scope) {
    function myInitFunction(){
        // fetch data etc.
    }

    myInitFunction();
}

这样就不会暴露init函数,而是很好地封装在你的控制器中。

答案 1 :(得分:0)

The documentation明确指出(在一个大的红色警报中)ngInit只有几个重点用例,不应在这些情景之外使用

  

可以滥用此指令来添加不必要的逻辑量   你的模板。 ngInit只有少数适​​当的用途,例如   至于别名ngRepeat的特殊属性,如演示中所示   下面;并通过服务器端脚本注入数据。除了这些   在少数情况下,您应该使用控制器而不是ngInit来初始化   范围内的值。