angularJS Provider、factory、service詳解及實例代碼
factory
用 Factory 就是創(chuàng)建一個對象,為它添加屬性,然后把這個對象返回出來。你把 service 傳進 controller 之后,在 controller 里這個對象里的屬性就可以通過 factory 使用了。
app.controller('myFactoryCtrl', function($scope, myFactory){ $scope.artist = myFactory.getArtis(); }); app.factory('myFactory', function(){ var _artist = ''; var service = {}; service.getArtist = function(){ return _artist; } return service; });
service
Service 是用"new"關鍵字實例化的。因此,你應該給"this"添加屬性,然后 service 返回"this"。你把 service 傳進 controller 之后,在controller里 "this" 上的屬性就可以通過 service 來使用了。
app.controller('myFactoryCtrl', function($scope, myService){ $scope.artist = myService.getArtis(); }); app.service('myService', function(){ var _artist =''; this.getArtist = function(){ return _artist; } });
provider
Providers 是唯一一種你可以傳進 .config() 函數(shù)的 service。當你想要在 service 對象啟用之前,先進行模塊范圍的配置,那就應該用 provider。
app.controller('myProviderCtrl', function($scope, myProvider){ $scope.artist = myProvider.getArtist(); $scope.data.thingFromConfig = myProvider.thingOnConfig; }); app.provider('myProvider', function(){ this._artist = ''; this.thingFromConfig = ''; this.$get = function(){ var that = this; return { getArtist: function(){ return that._artist; }, thingOnConfig: that.thingFromConfig } } }); app.config(function(myProviderProvider){ myProviderProvider.thingFromConfig = 'This was set in config()'; });
value和constant
$provide.value('myValue', 10); $provide.constant('myConstant', 10); /* 二者的區(qū)別: 1. value可以被修改,constant一旦聲明就無法修改 2. value不可以在config中注入,constant可以。 */
provider、factory、service三者的關系
app.provider('myDate', { $get: function() { return new Date(); } }); //可以寫成 app.factory('myDate', function(){ return new Date(); }); //可以寫成 app.service('myDate', Date);
總結
- 所有的供應商都只被實例化一次,也就說他們都是單例的
- 除了constant,所有的供應商都可以被裝飾器(decorator)裝飾
- value就是一個簡單的可注入的值
- service是一個可注入的構造器
- factory是一個可注入的方法
- decorator可以修改或封裝其他的供應商,當然除了constant
- provider是一個可配置的factory
以上就是對angularJS Provider、factory、service的資料整理,后續(xù)繼續(xù)補充相關資料,謝謝大家對本站的支持!
相關文章
ionic3實戰(zhàn)教程之隨機布局瀑布流的實現(xiàn)方法
這篇文章主要給大家介紹了關于ionic3實戰(zhàn)教程之隨機布局瀑布流的實現(xiàn)方法,文中通過示例代碼和圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-12-12Angularjs中的驗證input輸入框只能輸入數(shù)字和小數(shù)點的寫法(推薦)
這篇文章主要介紹了Angularjs中的驗證input輸入框只能輸入數(shù)字和小數(shù)點的寫法,需要的朋友可以參考下2017-08-08Angular實現(xiàn)防抖和節(jié)流的示例代碼
這篇博客主要是詳細介紹兩種常用Angular實現(xiàn)防抖和節(jié)流的方法:使用RxJS操作符和使用Angular自帶的工具,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下2024-02-02Angular實現(xiàn)的table表格排序功能完整示例
這篇文章主要介紹了Angular實現(xiàn)的table表格排序功能,結合完整實例形式分析了AngularJS表格排序所涉及的事件響應、元素遍歷、屬性修改等相關操作技巧,需要的朋友可以參考下2017-12-12