2015-08-28 31 views
0

当调用一个angularjs配置块,一些样品我看到像这样的代码: -调用angularjs配置块

app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 
    .... 
} 

等样品中我看到: -

app.config(function($stateProvider, $urlRouterProvider) { 
    .... 
} 

什么区别?

+0

检查这个http://stackoverflow.com/questions/31852967/why-do-angularjs-controller-declaration-have-this-syntax-structure/31853108#31853108 –

回答

1

在第一种方法中,前2是函数提供程序的别名,您可以使用微粒提供程序的别名,此方法用于缩小过程。

app.config(['sateP', 'urlRouterP', function($stateProvider, $urlRouterProvider) { 
    .... 
    // you can use stateP 
} 

但在第二你不能声明你的供应商的别名,你需要使用它。

+0

别名不是这个主要原因。此外,别名必须用于参数而不是列表中的删除。因为它是缩小的参数以及停留的注入列表。示例:http://jsfiddle.net/725htyav/带控制器。 –

1

第一个包含缩写的“注解”。

从Angularjs doc(在微小注1)

由于角度推断控制器的依赖从参数名称到控制器的构造函数,如果你是来缩小为PhoneListCtrl控制器的JavaScript代码,所有的它的函数参数也会被缩小,并且依赖注入器将无法正确识别服务。

我们可以通过用作为字符串提供的依赖关系的名称注释该函数来克服这个问题,这些字符串不会被缩小。有两种方法可以提供这些注入注释。

因此,如果你想缩小你的代码,就必须使用第一种语法。