什么是控制器参数的区别,一个是在数组中包装服务和返回函数

时间:2016-04-19 01:45:06

标签: angularjs

控制器参数的区别是什么,一个是在数组中包装服务和返回函数,

似乎类型1遵循DRY原则。

我没有理解以下2种语法之间的区别?

类型1

app.controller("UserCtrl", ['$scope', '$http', '$resource', 'Users', 'User', '$location', function($scope, $http, $resource, Users, User, $location) {
    ....
}]);

类型2

app.controller("UserCtrl", function($scope, $http, $resource, Users, User, $location) {    .... 
});

1 个答案:

答案 0 :(得分:1)

差异是Angular如何找到依赖项。

使用类型1,Angular使用字符串查找依赖项,因此您可以拥有自己的参数名称。

app.controller("UserCtrl", ['$scope', '$http', '$resource', 'Users', 'User', '$location', function(s, h, r, us, u, l) {
....
}]);

使用类型2,Angular使用参数名称来查找依赖项,您不能使用您喜欢的任何名称,否则,Angular可能无法找到它。

更多关于https://docs.angularjs.org/guide/di

依赖关系注释

Angular通过注入器调用某些功能(如服务工厂和控制器)。您需要注释这些函数,以便注入器知道要注入函数的服务。有三种方法可以使用服务名称信息注释代码:

  • 使用内联数组注释(首选)
  • 使用$ inject属性注释
  • 隐含地来自函数参数名称(有警告)