引自Angular教程:
要在Angular中使用服务,只需声明其名称即可 您需要的依赖项作为控制器构造函数的参数 功能如下:
phonecatApp.controller('PhoneListCtrl', function ($scope, $http) {...}
似乎controller
方法通过查看参数名称来检查您请求的服务,例如$scope
和$http
。但这似乎很粗糙。它实际上只是将函数转换为字符串并对其进行切片,如this?或者是否有一些更聪明的幕后行动正在进行?
它如何知道您的控制器请求了哪些服务?
答案 0 :(得分:3)
你是对的。 Angular只是查看参数名称。这会导致缩小问题,因为缩小可以将function ($scope, $http)
转换为function (a, b)
,然后角度将不知道哪个是什么。
相反,您应该使用长语法:
phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', function ($scope, $http) {...}
就其运作方式而言。 Angularjs巧妙地利用了这样一个事实:JavaScript中的每个对象都有一个toString函数来解析和提取参数的名称,然后再决定调用控制器函数的参数。此页面提供了有关它的更多详细信息:http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html