为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2019-05-23 19:08:54
请教一个问题:在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是如何判断我传的参数的顺序的。就是通过依赖注入,来确定你的参数顺序的,而这些“实际存在的工作”被你省略了。
                            
查看完整回答
反对 回复 2019-05-23
?
米脂

TA贡献1836条经验 获得超3个赞

app.controller("ctrl",['$scope','$rootScope','$http',function(fakeScope,fakeRootScope,fakeHttp){
//dosomethingwith$scope,$rootScope,$http
}]);
这样写名字就可以随便怎么变
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信