0

嗨,我在 angularjs 控制器 Method1 中看到了 2 种依赖注入方式:

 mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {}); 

方法2:

mainApp.controller('CalcController', ['$scope', 'CalcService', 'defaultInput',function($scope, CalcService, defaultInput) {}]);

方法1和方法2有什么区别?

4

4 回答 4

1

第二种方法使您的注射minification安全。实际的参数名称会缩短,但通过将它们提供双倍,它仍然可以被映射。

所以你应该使用第二种方法。

于 2015-12-03T13:12:00.577 回答
0

方法二允许您的代码被缩小并且仍然可以正常运行。

Javascript 没有命名函数参数,但是 Angular 的依赖系统对此进行了扩展以允许命名参数(这只是它的依赖系统,而不是整体)。这就是它知道注入什么的方式。

但是,缩小代码会重命名破坏角度注入系统的函数参数。

Angular 将使用数组按名称查找实际依赖项,然后将其插入到函数中该位置的变量中。这意味着数组中的顺序必须与您希望使用的函数参数的顺序相匹配。

于 2015-12-03T13:12:39.473 回答
0

关于依赖注入的官方 Angular 文档 -

https://github.com/angular/angular.js/blob/master/docs/content/guide/di.ngdoc#L103

于 2015-12-03T13:12:46.860 回答
0

当您缩小 javascript 时,方法 1 不起作用,因为“CalcService”将被重命名为“_a”之类的东西,这就是为什么在版本 2 中,您保留该名称,因为缩小器不接触字符串。因此服务名称是完整的。

于 2015-12-03T13:12:04.860 回答