我一直在阅读AngularJS代码并试图理解传递给.config方法的参数。从下面的示例中,它似乎是将[]传递给.config。困扰我的部分是根据docs.angularjs.org上的angular.Module文档,方法config,将configFn作为一个函数参数。那么为什么在下面的例子中我看到[' $ routeProvider',function(..){..}]被作为参数传递?有人可以帮助澄清我的困惑吗?
var sampleApp = angular.module('phonecatApp', []);
sampleApp .config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/addOrder', {
templateUrl: 'templates/add-order.html',
controller: 'AddOrderController'
}).
when('/showOrders', {
templateUrl: 'templates/show-orders.html',
controller: 'ShowOrdersController'
}).
otherwise({
redirectTo: '/addOrder'
});
}]);
答案 0 :(得分:3)
使用数组表示法是为了避免在为生产修改js文件时注入的模块出现问题。由于字符串不会被缩小,因此在数组中将'$ routeProvider'作为字符串传递是Angularjs中的约定。
答案 1 :(得分:0)
如果您没有传递字符串参数并且只传递了该函数,那么结果会相同。代码可以工作,但是当你试图缩小你的应用程序时会遇到问题。
缩小器将重命名函数的参数,因此Angular无法理解您的依赖项是什么。
您可以通过传递一个数组来解决这个问题,该数组的参数名称与函数所需的顺序相同。
这不仅发生在配置功能中,而且发生在需要注入依赖项的任何地方。