国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJs Managing Service Dependencies詳解

2019-11-20 09:05:48
字體:
來源:轉載
供稿:網友

  angular允許service將其他service聲明為依賴,使用在自身實例化時使用的構造函數中。

  為了聲明依賴,我們需要在工廠方法聲明中指定它們,并且在工廠方法中通過$inject屬性(字符串標識數組)或者使用array notation。

  通常$inject屬性聲明可以被丟棄(即//m.survivalescaperooms.com/article/91815.htm中提到的隱式依賴注入,但這個是實驗屬性,在而且在壓縮混淆后會失效,慎用?。?/p>

使用array notation

function myModuleCfgFn ($provide) {  $provide.factory(‘myService',[‘dep1','dep2',function(dep1,dep2){}]);}

使用$inject屬性   

function myModuleCfgFn($provide) {   var myServiceFactory = function(dep1, dep2) {};   myServiceFactory.$inject = ['dep1', 'dep2'];   $provide.factory('myService', myServiceFactory); }

使用隱式DI(不兼容壓縮混淆的代碼)

function myModuleCfgFn($provide) {  $provide.factory('myService', function(dep1, dep2) {});}

       下面有一個例子,里面有兩個service,它們之間存在依賴關系,以及其他一些angular提供的service。

 /** * batchLog service 允許消息在內存中形成隊列,50秒flush一次。 * * @param {*} message Message to be logged. */ function batchLogModule($provide){   $provide.factory('batchLog', ['$timeout', '$log', function($timeout, $log) {     var messageQueue = [];     function log() {       if (messageQueue.length) {         $log('batchLog messages: ', messageQueue);         messageQueue = [];       }       $timeout(log, 50000);     }     log();      return function(message) {       messageQueue.push(message);     }   }]);   /**   * routeTemplateMonitor監(jiān)控每一個route的變化,每個比阿奴啊都會通過batchLog service記錄下來   */   $provide.factory('routeTemplateMonitor',     ['$route', 'batchLog', '$rootScope',     function($route, batchLog, $rootScope) {       $rootScope.$on('$routeChangeSuccess', function() {         batchLog($route.current ? $route.current.template : null);       });   }]); } // 獲得主service,運行應用(監(jiān)聽事件)  angular.injector([batchLogModule]).get('routeTemplateMonitor');

例子中需要注意的事項:

  1. batchLog service依賴angular內置的$timeout(http://docs.angularjs.org/api/ng.$timeout)與$log services(http://docs.angularjs.org/api/ng.$log),實現通過console.log批量log消息。
  2. routeTemplateMonitor service依賴內置的$route(http://docs.angularjs.org/api/ng.$route) service與我們自定義的batchLog service。
  3. 我們兩個service都使用工廠方法簽名以及array notation來注釋inject,聲明它們的依賴。array中的字符串標識的順序與工廠方法簽名(參數)中的順序必須一致,這十分重要。除非在工廠方法參數中使用隱式依賴聲明,否則,injector將根據array中字符串的順序決定inject哪一個服務。

以上就是關于AngularJs Managing Service Dependencies 資料的整理,后續(xù)繼續(xù)添加相關資料,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 禹城市| 鸡东县| 承德市| 慈溪市| 海宁市| 阳泉市| 武山县| 德兴市| 三都| 宝丰县| 炎陵县| 易门县| 逊克县| 益阳市| 佛坪县| 榆林市| 潞西市| 北海市| 南雄市| 广水市| 武平县| 金溪县| 洞头县| 江口县| 高青县| 三亚市| 洛浦县| 宜阳县| 兰西县| 宁津县| 建瓯市| 黔西县| 堆龙德庆县| 无锡市| 许昌市| 青冈县| 信阳市| 南和县| 灵川县| 英超| 丹棱县|