angular中的service服务方法很多地方都会可以用到,内部其实也是依赖angularjs强大的依赖注入能力。
我们先看昨天文章模块创建使用的案例:
angular.module
1 | // 创建myModule模块 |
service
关于angular模块的创建,我们上一篇文章已经讲过,我们就看下模块的service方法,在新建模块后这个模块
实例就拥有了service函数。
1 | var invokeQueue = []; |
那么我们就可以知道在调用service的方法其实就是把$provide,service,还有参数(这边就是arguments)放入invokeQueue中,
从名字看出来这是个调用队列,那就有个疑问了,这个invokeQueue是干啥的呢? 什么时候会调用这个invokeQueue呢?
那就是createInjector函数中的loadModules函数。
loadModules
loadModules函数会在createInjector的时候去调用,看看它对service起的作用
1 | function createInjector(modulesToLoad){ |
我们看到关键一句代码
1 |
|
invokeArgs[0]就是$provide,invokeArgs[1]就是service,那么实际调用的就是$provide.service函数,参数就是['myService', function() {
this.my = 0;
}]
,关于$provide.service函数我们下篇文章再分析。