angularjs里$scope,$rootScope等名字为什么不能变?

请教一个问题:
在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)?
眼眸繁星
浏览 376回答 2
2回答

子衿沉夜

我是这样理解这个问题的。如果按照你的写法,一般意义上来讲,function中传参,参名改成其他的也是可行的。但是你可能忽略了,你没有按照严格的写法来写这段依赖注入。比如你的示例,完整应该这样写app.controller("ctrl",['$scope','$rootScope','$http',function($scope,$rootScope,$http){//dosomethingwith$scope,$rootScope,$http}]);也就是说,你函数当中的参数,已经被你的依赖注入,“固定”好了,这也顺便回答了你angularjs是如何判断我传的参数的顺序的。就是通过依赖注入,来确定你的参数顺序的,而这些“实际存在的工作”被你省略了。

米脂

app.controller("ctrl",['$scope','$rootScope','$http',function(fakeScope,fakeRootScope,fakeHttp){//dosomethingwith$scope,$rootScope,$http}]);这样写名字就可以随便怎么变
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript