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

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

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

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

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的值的變化,當(dāng)發(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>

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

效果:

這里寫圖片描述

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

我們可以使用服務(wù)來廣播事件:

<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>

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

效果為:

這里寫圖片描述

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

相關(guān)文章

  • angular源碼學(xué)習(xí)第一篇 setupModuleLoader方法

    angular源碼學(xué)習(xí)第一篇 setupModuleLoader方法

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

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

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

    AngularJS中run方法的巧妙運(yùn)用

    前端技術(shù)的發(fā)展是如此之快,各種優(yōu)秀技術(shù)、優(yōu)秀框架的出現(xiàn)簡直讓人目不暇接,緊跟時代潮流,學(xué)習(xí)掌握新知識自然是不敢怠慢。下面這篇文章主要給大家介紹了AngularJS中run方法的巧妙運(yùn)用,需要的朋友可以參考借鑒,下面來一起看看吧。
    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的簡單實例的相關(guān)資料,這里提供兩個實例方法幫助大家徹底掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • 淺談Angular單元測試總結(jié)

    淺談Angular單元測試總結(jié)

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

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

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

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

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

最新評論

兴城市| 乌兰察布市| 营山县| 乌鲁木齐县| 宣威市| 山阴县| 门头沟区| 高雄县| 天台县| 满城县| 山阴县| 津市市| 体育| 青海省| 遵义市| 龙陵县| 神农架林区| 淮滨县| 和田市| 黄冈市| 深泽县| 新疆| 宣城市| 珲春市| 衡阳市| 铅山县| 高淳县| 额尔古纳市| 平利县| 石楼县| 大理市| 信阳市| 南投市| 台前县| 夏津县| 陇南市| 玛纳斯县| 贵南县| 清流县| 惠东县| 体育|