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

Angular中$broadcast和$emit的使用方法詳解

 更新時間:2017年05月22日 10:43:15   作者:justforuse  
本篇文章主要介紹了Angular中$broadcast和$emit的使用方法詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下

要在控制器之間傳遞變量變化需要使用angular中的$broadcast和$emit方法來傳遞,同時使用$on來接收事件并作出響應。

broadcast譯為廣播,即上級傳遞下級。

示例代碼:

<script src="../angular.js"></script>
<script>
angular.module("app", [])
  .controller("child", function($scope) {
    $scope.$on("parentChange", function(e, m) {
      $scope.change = "changed";
      $scope.child = m;
    })
  })
  .controller("parent", function($scope) {
    $scope.$watch("parent", function(n, o) {
      if (n == o) {
        return;
      }
      $scope.$broadcast("parentChange", n)
    })
  })
</script>

<body>
  <div ng-controller="parent">
    Parent: {{parent}}
    <input type="text" ng-model="parent">

    <div ng-controller="child">
      {{change}} Child: {{child}}
    </div>
  </div>
</body>

上述代碼使用$watch監(jiān)聽parent的值的變化,當發(fā)生變化時就會“廣播”出parentChange事件并傳遞了參數(shù)(輸入框的值),此時子元素作用域中使用了$scope.$on("parentChange, handler)" 來接收parentChange事件,然后接受輸入框的值并賦值給子作用域中的child變量。 這樣就完成了值的傳遞。

效果:

這里寫圖片描述

emit譯為發(fā)射,即下級傳遞上級。

示例代碼:

<script src="../angular.js"></script>
<script>
angular.module("app", [])
  .controller("parent", function($scope) {
    $scope.$on("childChange", function(e, m) {
      $scope.change = "changed";
      $scope.parent = m
    })
  })
  .controller("child", function($scope) {
    $scope.$watch("child", function(n, o) {
      if (n == o) {
        return;
      }
      $scope.$emit("childChange", n)
    })
  })
</script>


<body ng-controller="parent">
  {{change}} Parent: {{parent}}
  <div ng-controller="child">
    Child: {{child}}
    <input type="text" ng-model="child">
  </div>
</body>

當子元素的child值發(fā)生變化時,會向上級發(fā)出childChange事件,此時父元素正在監(jiān)聽的$on(“childChange”)會做出響應,將傳遞的參數(shù)賦值給parent,整個流程與 broadcast類似。

效果:

這里寫圖片描述

上述作用域均存在層級關系,如果對于同級的作用域該如何做呢?

我們可以使用服務來廣播事件:

<script src="../angular.js"></script>
<script>
angular.module("app", [])
  .service("myServive", function($rootScope) {
    return {
      change: function(n) {
        $rootScope.$broadcast("valueChange", n);

      }
    }
  })
  .controller("bro1", function($scope, myServive) {
    $scope.$watch("value1", function(n) {
      myServive.change(n);
    })

    $scope.$on("valueChange", function(e, m) {
      console.log("value1");
      $scope.value1 = m;
    })
  })
  .controller("bro2", function($scope, myServive) {
    $scope.$watch("value2", function(n) {
      myServive.change(n);
    })

    $scope.$on("valueChange", function(e, m) {
      console.log("value2");
      $scope.value2 = m;
    })
  })
</script>


<body>
  <div ng-controller="bro1">
    <h3> value1:</h3>
    <input type="text" ng-model="value1">
  </div>
  <div ng-controller="bro2">
    <h3>value2:</h3>
    <input type="text" ng-model="value2">
  </div>
</body>

我們在服務中運用了$rootScope,所有的作用域都從屬于它,基于這點,我們可以在根作用域中廣播事件,$rootScope.$broadcast("valueChange", n);,當每個子作用域中的值發(fā)生變化時我們都會調(diào)用服務中的change 方法來廣播這個事件,同時每個作用域又都在監(jiān)聽$on("valueChange") 事件并作出相應處理,這樣就實現(xiàn)了子作用域中的值會傳遞給兄弟作用域了。

效果為:

這里寫圖片描述

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • angular源碼學習第一篇 setupModuleLoader方法

    angular源碼學習第一篇 setupModuleLoader方法

    這篇文章主要介紹了angular源碼學習第一篇,setupModuleLoader方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Angular.js實現(xiàn)動態(tài)加載組件詳解

    Angular.js實現(xiàn)動態(tài)加載組件詳解

    這篇文章主要給大家介紹了關于Angular.js實現(xiàn)動態(tài)加載組件的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • AngularJS中run方法的巧妙運用

    AngularJS中run方法的巧妙運用

    前端技術的發(fā)展是如此之快,各種優(yōu)秀技術、優(yōu)秀框架的出現(xiàn)簡直讓人目不暇接,緊跟時代潮流,學習掌握新知識自然是不敢怠慢。下面這篇文章主要給大家介紹了AngularJS中run方法的巧妙運用,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • AngularJS 中文API參考手冊

    AngularJS 中文API參考手冊

    本文主要介紹AngularJS API,這里對AngularJS的指令,事件,全局API等做中文翻譯,希望能幫助有需要的小伙伴
    2016-07-07
  • 淺談Angularjs中不同類型的雙向數(shù)據(jù)綁定

    淺談Angularjs中不同類型的雙向數(shù)據(jù)綁定

    這篇文章主要介紹了淺談Angularjs中不同類型的雙向數(shù)據(jù)綁定,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • angularjs封裝$http為factory的方法

    angularjs封裝$http為factory的方法

    本篇文章主要介紹了angularjs封裝$http為factory的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Angularjs中ng-repeat的簡單實例

    Angularjs中ng-repeat的簡單實例

    這篇文章主要介紹了Angularjs中ng-repeat的簡單實例的相關資料,這里提供兩個實例方法幫助大家徹底掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 淺談Angular單元測試總結

    淺談Angular單元測試總結

    這篇文章主要介紹了淺談Angular單元測試總結,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • AngularJS 最常用的八種功能(基礎知識)

    AngularJS 最常用的八種功能(基礎知識)

    這篇文章主要介紹了AngularJS 最常用的八種功能,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-06-06
  • AngularJS 實現(xiàn)點擊按鈕獲取驗證碼功能實例代碼

    AngularJS 實現(xiàn)點擊按鈕獲取驗證碼功能實例代碼

    本文通過實例代碼給大家介紹了AngularJS 實現(xiàn)點擊按鈕獲取驗證碼功能,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-07-07

最新評論

文水县| 罗平县| 沙雅县| 邛崃市| 镇江市| 泽普县| 盘锦市| 时尚| 嘉鱼县| 武宣县| 四会市| 昌乐县| 霍林郭勒市| 克什克腾旗| 淮南市| 徐州市| 都兰县| 乌海市| 义乌市| 齐河县| 高尔夫| 高台县| 上虞市| 慈利县| 蓬溪县| 台湾省| 库车县| 黎平县| 镇康县| 安平县| 繁昌县| 长葛市| 上林县| 仁寿县| 元阳县| 农安县| 抚松县| 崇义县| 淮南市| 赤水市| 辰溪县|