我在angularjs控制器中看到过两种依赖注入方式 方法一:
mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {});
方法2:
mainApp.controller('CalcController', ['$scope', 'CalcService', 'defaultInput',function($scope, CalcService, defaultInput) {}]);
method1和method2之间的差异是什么?
答案 0 :(得分:1)
第二种方法可使您的注射Answer
安全无虞。实际的参数名称缩短了,但通过提供它们,它仍然可以映射。
所以你应该使用第二种方法。
答案 1 :(得分:0)
当你缩小javascript时,方法1不起作用,因为" CalcService"将被重命名为" _a",这就是为什么在版本2中,你坚持使用名称,因为minifiers不会触及字符串。因此服务名称完好无损。
答案 2 :(得分:0)
方法二允许您的代码缩小并仍能正常运行。
Javascript没有命名函数参数,但是角度的依赖系统类型扩展了它以允许命名参数(这只是它的依赖系统,而不是整体)。多数民众赞成如何知道注入什么。
然而,缩小代码会重命名打破角度注射系统的功能参数。
使用数组按名称查找实际依赖关系,然后将其插入到函数中该位置的变量中。这意味着数组中的顺序必须与您希望使用的函数参数的顺序相匹配。
答案 3 :(得分:0)
关于依赖注入的官方Angular文档 -
https://github.com/angular/angular.js/blob/master/docs/content/guide/di.ngdoc#L103