加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

将函数和数组作为AngularJS控制器传递有什么区别?

发布时间:2020-12-17 10:26:10 所属栏目:安全 来源:网络整理
导读:这两个都有效,但每个实现之间的实际差异是什么?我确信每种方法背后都有合理的推理,我希望能够开悟. angular.module('app').controller('GeneralCtrl',function($scope,$location,exampleService) { $scope.variable = exampleService.getExampleVariable();
这两个都有效,但每个实现之间的实际差异是什么?我确信每种方法背后都有合理的推理,我希望能够开悟.
angular.module('app').controller('GeneralCtrl',function($scope,$location,exampleService) {
        $scope.variable = exampleService.getExampleVariable();
    }        
);

angular.module('app').controller('GeneralCtrl',['$scope','$location','exampleService',exampleService) {
        $scope.variable = exampleService.getExampleVariable();
    }]
);

这些之间的实际区别是什么?你会用不同的方式使用它们?为什么?

答:当minifiers重命名参数名称时,后者是minification安全的,因此无法从名称中推断出依赖关系,因此必须进行注释.

这就是Angular称为依赖注入的“内联符号”(详见 http://docs.angularjs.org/guide/di).

在您给出的示例中,ng-controller指令实际上是在幕后工作,将$scope,$location和exampleService连接到您为第一个函数提供的变量中.默认情况下,它基于变量名称执行此操作(即,它假定名为$scope的变量要求$scope依赖项).

也就是说,当你缩小你的代码时,变量名也会被砍掉(即$scope可能变成a).当发生这种情况时,Angular现在不再知道变量的意思了.

一种选择是添加

GeneralCtl.$inject('$scope','exampleService')

另一种方法是像第二个例子中那样提供这些字符串.这可以确保即使变量名称改变了,你也告诉Angular他们应该代表什么,并且它知道如何正确设置它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读