请教一个问题:在angularjs里我们常常会写这样的代码app.controller("ctrl",function($scope,$rootScope,$http){//dosomethingwith$scope,$rootScope,$http});但是为什么$scope,$http等的名字是不能变的呢?就是说为什么我不能写成这个样子:app.controller("ctrl",function($fakeScope,$fakeRootScope,$fakeHttp){//dosomethingwith$fakeScope,$fakeRootScope,$fakeHttp});甚至是这样:app.controller("ctrl",function(fakeScope,fakeRootScope,fakeHttp){//dosomethingwithfakeScope,fakeRootScope,fakeHttp});都是不行的。以及,angularjs是如何判断我传的参数的顺序的(比如为什么我传的第一个就是$scope而不是$rootScope)?
2 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
我是这样理解这个问题的。如果按照你的写法,一般意义上来讲,function中传参,参名改成其他的也是可行的。但是你可能忽略了,你没有按照严格的写法来写这段依赖注入。比如你的示例,完整应该这样写app.controller("ctrl",['$scope','$rootScope','$http',function($scope,$rootScope,$http){//dosomethingwith$scope,$rootScope,$http}]);也就是说,你函数当中的参数,已经被你的依赖注入,“固定”好了,这也顺便回答了你angularjs是如何判断我传的参数的顺序的。就是通过依赖注入,来确定你的参数顺序的,而这些“实际存在的工作”被你省略了。
米脂
TA贡献1836条经验 获得超3个赞
app.controller("ctrl",['$scope','$rootScope','$http',function(fakeScope,fakeRootScope,fakeHttp){//dosomethingwith$scope,$rootScope,$http}]);这样写名字就可以随便怎么变
添加回答
举报
0/150
提交
取消