angularjs 中 Factory,Service,Provider 之间的区别
本片文章是使用了?angularjs 中使用 service 在controller 之間 share 對象和數據?的code(http://jsfiddle.net/kn46u0uj/1/) 來進行演示?Factory,Service,Provider 之間的區別
?
1. Factory
factory('dataService',function(){return {golbal_sitename:"this is the shared value",sayHello:function(msg){alert(msg);}} })注意看上面的代碼,我們定義dataService 里面 ,后面的funciton 直接返回的是一個對象。 反回對象里面可以定義屬性和方法,上面就是返回了一個golbal_sitename屬性和sayHello方法。
簡單點說就是: 在factory 定義的function 返回的對象上面定義些屬性和方法, 等注入到controller后,就可以在controller調用這些屬性和方法了。
?
2. 我們來用service改寫上面的代碼
service('dataService',function(){this.golbal_sitename = "this is the shared value";this.sayHello = function(msg){alert(msg);}; });注意上面的代碼和factory 定義的區別,這里我們去掉了return 添加了this關鍵字。換句話說 factory 定義里面的function 其實是返回個對象,而service 定義里面的funciton 返回的是個類定義。
也就是說service 里面定義的dataService 最后是通過new 后面定義的function 來實例化的。
http://jsfiddle.net/kn46u0uj/3/
?
3. 使用Provider再次改寫代碼
Provider 定義的 service 可以傳進 .config() 函數。當我們需要在service 啟用前配置其模塊參數時,就需要使用Provider來定義service.
代碼如下:
provider('dataService',function(){this.$get = function(){return {golbal_sitename:"this is the shared value",sayHello:function(msg){alert(msg);}}}; })http://jsfiddle.net/kn46u0uj/5/
?
上面使用三種方式定義的service 都可以正常工作, 唯一需要注意的就是使用當service 需要傳入到config中進行配置的時候,一定要使用provider進行定義。
轉載于:https://www.cnblogs.com/slardar1978/p/4203979.html
總結
以上是生活随笔為你收集整理的angularjs 中 Factory,Service,Provider 之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解C指针之四:指针和数组
- 下一篇: Javascript 面向对象编程定义接