最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJs Injecting Services Into Controllers詳解

 更新時(shí)間:2016年09月02日 15:18:10   作者:Lcllao  
本文主要介紹AngularJs Injecting Services Into Controllers的知識(shí),這里整理了一下相關(guān)資料,及示例代碼,幫助大家學(xué)習(xí)和理解,有興趣的小伙伴可以參考下

     把service當(dāng)作被依賴的資源加載到controller中的方法,與加載到其他服務(wù)中的方法很相似。

  由于javascript是一個(gè)動(dòng)態(tài)語言,DI不能弄明白應(yīng)該通過static types(like in static typed languages)注入哪一個(gè)service。因此,我們需要通過$inject屬性指定service名稱, 它是一個(gè)包含需要注入的service名稱的字符串?dāng)?shù)組。service ID順序的重要性:工廠方法中的參數(shù)順序,與service在數(shù)組中的順序一致。工廠方法的參數(shù)名稱并不重要,但是按照慣常的做法,他們與service ID一一匹配,下面將討論這樣做的好處。

1.顯式依賴注入

function myController($scope,$loc,$log) {
  $scope.firstMethod = function() {
    //使用$location service
    $loc.setHash();
  };
  $scope.secondMethod = function() {
    //使用$log service
    $log.info(‘…')
  };
}
myController.$inject = [‘$location','$log'];  

例子:

<!DOCTYPE HTML>
<html lang="zh-cn" ng-app="MainApp">
<head>
  <meta charset="UTF-8">
  <title>explicit-inject-service</title>
</head>
<body>
<div ng-controller="MyController">
  <input type="text" ng-model="msg"/>
  <button ng-click="saveMsg()">save msg</button>
  <ul>
    <li ng-repeat="msg in msgs">{{msg}}</li>
  </ul>
</div>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">
  var app = angular.module("MainApp",[],function($provide) {
    $provide.factory("notify",["$window","$timeout",function(win,timeout) {
      //這里是服務(wù)依賴服務(wù),通過這種顯式的方式,參數(shù)名可以亂填,但順序要對(duì)應(yīng)
      var msgs = [];
      return function(msg) {
        msgs.push(msg);
        if(msgs.length==3) {
          timeout(function() {
            win.alert(msgs.join("\n"));
            msgs = [];
          },10);
        }
      }
    }]);
  });

  function MyController($s,$noti) {
    //這里是controller依賴服務(wù),通過這種顯式的方式,參數(shù)名可以亂填,但順序要對(duì)應(yīng)
    $s.msgs = [];
    $s.saveMsg = function() {
      this.msgs.push(this.msg);
      $noti(this.msg);
      this.msg = "";
    };
  }
  //指定注入的東東
  //也可以參考http://www.cnblogs.com/lcllao/archive/2012/10/16/2725317.html里面的例子
  MyController.$inject = ['$scope','notify'];

</script>
</body>
</html>

 2. 隱式依賴注入

 angular DI的一個(gè)新特性,允許通過參數(shù)名稱決定依賴。讓我們重寫上面的例子,展示如何隱式注入$window、$scope與notify service。

例子:

<!DOCTYPE HTML>
<html lang="zh-cn" ng-app="MainApp">
<head>
  <meta charset="UTF-8">
  <title>implicit-inject-service</title>
</head>
<body>
<div ng-controller="MyController">
  <input type="text" ng-model="msg"/>
  <button ng-click="saveMsg()">save msg</button>
  <ul>
    <li ng-repeat="msg in msgs">{{msg}}</li>
  </ul>
</div>
<script src="../angular-1.0.1.js" type="text/javascript"></script>
<script type="text/javascript">
  var app = angular.module("MainApp",[],function($provide) {
    $provide.factory("notify",function($window,$timeout) {
      //服務(wù)依賴服務(wù),隱式依賴,名稱一致即可
      var msgs = [];
      return function(msg) {
        msgs.push(msg);
        if(msgs.length==3) {
          $timeout(function() {
            $window.alert(msgs.join("\n"));
            msgs = [];
          },10);
        }
      }
    });
  });

  function MyController($scope,notify) {
    //服務(wù)依賴服務(wù),隱式依賴,名稱一致即可
    $scope.msgs = [];
    $scope.saveMsg = function() {
      this.msgs.push(this.msg);
      notify(this.msg);
      this.msg = "";
    };
  }
</script>
</body>
</html>

 

  雖然這樣很方便,但是假如我們需要壓縮、混淆我們的代碼,這可能會(huì)導(dǎo)致參數(shù)名稱被更改,遇到這種情況的時(shí)候,我們還是需要使用顯式聲明依賴的方式。

以上就是關(guān)于AngularJS Injecting Services Into Controllers的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Angular表單驗(yàn)證實(shí)例詳解

    Angular表單驗(yàn)證實(shí)例詳解

    這篇文章主要介紹了angular表單驗(yàn)證的相關(guān)知識(shí),angular來驗(yàn)證可以定義樣式的,下文通過代碼給大家實(shí)例介紹下,需要的朋友可以參考下
    2016-10-10
  • 詳解如何構(gòu)建一個(gè)Angular6的第三方npm包

    詳解如何構(gòu)建一個(gè)Angular6的第三方npm包

    這篇文章主要介紹了詳解如何構(gòu)建一個(gè)Angular6的第三方npm包,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • AngularJS基礎(chǔ)教程之簡(jiǎn)單介紹

    AngularJS基礎(chǔ)教程之簡(jiǎn)單介紹

    本教程旨在幫助你盡可能快速而有效地學(xué)習(xí)AngularJS。通過該教程你會(huì)學(xué)習(xí)到AngularJS的一些基本特性,例如指令、表達(dá)式、過濾器、模塊和控制器等。以及其它所有你需要知道的有關(guān)AngularJS的東西,如事件、DOM節(jié)點(diǎn)、表單、用戶輸入、數(shù)據(jù)驗(yàn)證、Http對(duì)象等。
    2015-09-09
  • 淺談Angular文字折疊展開組件的原理分析

    淺談Angular文字折疊展開組件的原理分析

    本篇文章主要介紹了淺談Angular文字折疊展開組件的原理分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • AngularJS控制器繼承自另一控制器

    AngularJS控制器繼承自另一控制器

    本文給大家介紹AngularJS控制器繼承自另一控制器的相關(guān)內(nèi)容,小編認(rèn)為介紹的非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友參考下吧
    2016-05-05
  • 詳解Angular 4.x NgIf 的用法

    詳解Angular 4.x NgIf 的用法

    本篇文章主要介紹了詳解Angular 4.x NgIf,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Angular如何由模板生成DOM樹的方法

    Angular如何由模板生成DOM樹的方法

    這篇文章主要介紹了Angular如何由模板生成DOM樹的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • AngularJS控制器controller給模型數(shù)據(jù)賦初始值的方法

    AngularJS控制器controller給模型數(shù)據(jù)賦初始值的方法

    這篇文章主要介紹了AngularJS控制器controller給模型數(shù)據(jù)賦初始值的方法,涉及AngularJS控制器controller簡(jiǎn)單賦值操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-01-01
  • 詳解AngularJS通過ocLazyLoad實(shí)現(xiàn)動(dòng)態(tài)(懶)加載模塊和依賴

    詳解AngularJS通過ocLazyLoad實(shí)現(xiàn)動(dòng)態(tài)(懶)加載模塊和依賴

    本篇文章主要介紹了詳解AngularJS通過ocLazyLoad實(shí)現(xiàn)動(dòng)態(tài)(懶)加載模塊和依賴 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 詳解Angular中的自定義服務(wù)Service、Provider以及Factory

    詳解Angular中的自定義服務(wù)Service、Provider以及Factory

    本篇文章主要介紹了詳解Angular中的自定義服務(wù)Service、Provider以及Factory,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評(píng)論

科尔| 文化| 大冶市| 临安市| 咸宁市| 哈密市| 孝义市| 自贡市| 盘山县| 永新县| 桐乡市| 余庆县| 蓬莱市| 怀来县| 自贡市| 固镇县| 永寿县| 安溪县| 河曲县| 晋中市| 桐城市| 泰州市| 赣榆县| 博乐市| 天长市| 普陀区| 邓州市| 铜山县| 顺昌县| 博湖县| 丹寨县| 邓州市| 安阳县| 武功县| 渭南市| 喀喇| 南江县| 房产| 临武县| 连江县| 平泉县|