4 回答
TA贡献1818条经验 获得超7个赞
我是这样理解这个问题的。
如果按照你的写法,一般意义上来讲,function中传参,参名改成其他的也是可行的。
但是你可能忽略了, 你没有按照严格的写法来写这段依赖注入。比如你的示例,完整应该这样写
app.controller("ctrl", ['$scope','$rootScope', '$http',function ($scope, $rootScope, $http) {
// do something with $scope, $rootScope, $http
}]);
也就是说,你函数当中的参数,已经被你的依赖注入,“固定”好了,这也顺便回答了你angularjs是如何判断我传的参数的顺序的。就是通过依赖注入,来确定你的参数顺序的,而这些“实际存在的工作”被你省略了。
TA贡献1820条经验 获得超2个赞
app.controller("ctrl", ['$scope','$rootScope', '$http',function (fakeScope, fakeRootScope, fakeHttp) {
// do something with $scope, $rootScope, $http
}]);
这样写名字就可以随便怎么变
TA贡献1817条经验 获得超14个赞
这就取决于angular的依赖注入实现了,采用Function.prototype.toString将函数转为string,分析里面的参数名称,执行时将这些服务作为参数传递进来就行了
function injector(fakeScope) {}
injector.toString()
// output:
// "function injector(fakeScope) {}"
所以,这就是不行的原因了。
但是你这样写是有限制的,如果使用了代码混淆,参数名可能变成这样
function injector(a) {}
所以,正经的写法按照前几位回答的写就行了,injector作为一个array,依赖从array的slice(0, -1)中取。
添加回答
举报