这两个都有效,但每个实现之间的实际差异是什么?我确信每种方法背后都有合理的推理,我希望能够开悟.
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他们应该代表什么,并且它知道如何正确设置它们.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。