1
windwhinny 2013-11-14 16:11:07 +08:00 via Android 11
首""先回答你的问题,参数都在那个匿名函数的参数列表里。
controller(name,fun) fun是controller的构建函数,我们需要依赖一些其它库来构建一个controller。这个时候angular就用到了一项技术,叫做依赖注入,dependency inject。 比如说我新建一个controller,需要从服务器上获取点数据,也就是ajax,angular.有个对应的库叫做$http。代码就这样写: controller("myctrl",function($scope,$http){ .... }) 这时候你就可以在构建函数内访问并$http了。如果根据业务扩展的需要,我还要获得并修改浏览器的url,这时候就需要$location: controller("myctrl",function($scope,$location,$http){ .... }) 把$location和$http的位置颠倒也没问题。也就是说如果你需要什么库,直接在构造函数的参数里把需要的东西写出来就行了,angular会自动获取那个库并传递给构造函数。有没有觉得很神奇?! angular是怎么知道构造函数的参数是什么的? (function($scope,$http,$location){}).toString() 运行这段代码你就懂了。toString可以将函数的源代码输出成字符串,通过解析这段字符串来得知他的参数以及名称。 但是这样会遇到一个问题,当我使用压缩工具来压缩源码之后,函数的参数名都会变,怎么办? function($scope,$location,$http){} 压缩后成了 function(a,b,c){} 这时候就需要将构建函数替换为一个数组,数组最后一个元素为构建函数,其它为参数。 controller("myctrl",[ "$scope", "$location", "$http", function(scope,location,http){ } ]) 这样就行了 |
2
coolicer OP @windwhinny 尼玛,牛逼。我懂了,看着英文文档老看不到重点。
|
3
justfindu 2013-11-14 17:00:00 +08:00
@windwhinny via android 打这么多字 -0-
|
4
flyingnn 2013-11-15 00:28:58 +08:00
@windwhinny 说得好详细,不得不感谢啊。
|
5
teddy1004 2013-11-16 08:27:29 +08:00 via iPhone
@windwhinny 大赞啊!看了有种拨云见日的感觉
|
6
RobinFai 2013-11-20 10:13:33 +08:00
这个必须赞了...
|