2013/9/29
angularjs的Provider,Factory,Service比較
簡單的說
Provider
module.provider('name',provider);
provider可以是obj,function,array
只要其有$get()這個function即可
如果為function,則會被new出來,在注入時回傳他的$get
Factory
module.factory('name',$getFn);
這個function封裝了Provider,
會直接new一個function,並把$getFn寫在這個function的$get上
factory回傳的東西,是拿來跑new function的
Service
Service則再封裝了Factory,原始碼如下,實作了singleton模式
function service(name, constructor) {
return factory(name, ['$injector', function($injector) {
return $injector.instantiate(constructor);
}]);
}
service回傳的東西,是拿來直接myService.foo(),myService.bar()
什麼時候用Factory,什麼時候用Service,目前還搞不太清楚就是了
其他如
config:
通常route會放這邊
value:
factory的再封裝,直接回應設定的值(注意,是存執,不是存run function)
constant:
factory的再封裝,可以在config function中被擷取到
可以想成constant在注入時,會在config前被執行
ref:
http://iffycan.blogspot.tw/2013/05/angular-service-or-factory.html
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言