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

首頁 > 編程 > JavaScript > 正文

AngularJs Managing Service Dependencies詳解

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

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

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

  通常$inject屬性聲明可以被丟棄(即//www.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ā)表
主站蜘蛛池模板: 延寿县| 长岭县| 屏东县| 张家界市| 黔西县| 浠水县| 双流县| 常德市| 西青区| 开鲁县| 中江县| 麻栗坡县| 怀集县| 大港区| 宣化县| 明溪县| 黔南| 深州市| 彩票| 定州市| 射阳县| 岳阳县| 玛沁县| 黄平县| 鹤庆县| 保山市| 金寨县| 大石桥市| 龙游县| 裕民县| 同江市| 永昌县| 黄山市| 康定县| 吉木萨尔县| 大名县| 武汉市| 都江堰市| 南郑县| 龙江县| 荔浦县|