zoukankan      html  css  js  c++  java
  • AngularJS的学习 $on、$emit和$broadcast的使用

    $on、$emit和$broadcast使得event、data在controller之间的传递变的简单。

    $emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data

    转载:http://www.it165.net/pro/html/201404/12610.html

    这个我测试了一下,只要$emit和$broadcast 发射,$on就可以立刻接受到的。

    不过用的是$scope 发射和接受。

    emit(name,data)向父control发射的。

    而broadcast(name,data)是向子control发射的。 

    ?不知道可以扩control想爸爸的爸爸发射呢,没有试过

    html的代码

    <div ng-controller="ParentCtrl">                <!--父级-->
        <div ng-controller="SelfCtrl">              <!--自己-->
            <a ng-click="click()">click me</a>
            <div ng-controller="ChildCtrl"></div>   <!--子级-->
        </div>
        <div ng-controller="BroCtrl"></div>         <!--平级-->
    </div><br>

    js的代码

     1 app.controller('SelfCtrl', function($scope) {
     2     $scope.click = function () {
     3         $scope.$broadcast('to-child', 'child');
     4         $scope.$emit('to-parent', 'parent');
     5     }
     6 });
     7 
     8 app.controller('ParentCtrl', function($scope) {
     9     $scope.$on('to-parent', function(event,data) {
    10         console.log('ParentCtrl', data);       //父级能得到值
    11     });
    12     $scope.$on('to-child', function(event,data) {
    13         console.log('ParentCtrl', data);       //子级得不到值
    14     });
    15 });
    16 
    17 app.controller('ChildCtrl', function($scope){
    18     $scope.$on('to-child', function(event,data) {
    19         console.log('ChildCtrl', data);         //子级能得到值
    20     });
    21     $scope.$on('to-parent', function(event,data) {
    22         console.log('ChildCtrl', data);         //父级得不到值
    23     });
    24 });
    25 
    26 app.controller('BroCtrl', function($scope){  
    27     $scope.$on('to-parent', function(event,data) {  
    28         console.log('BroCtrl', data);          //平级得不到值  
    29     });  
    30     $scope.$on('to-child', function(event,data) {  
    31         console.log('BroCtrl', data);          //平级得不到值  
    32     });  
    33 });

    最终结果

    ParentCtrl child

    ChildCtrl parent

     $emit和$broadcast可以传多个参数,$on也可以接收多个参数。

     在$on的方法中的event事件参数,其对象的属性和方法如下

  • 相关阅读:
    MvvmTest
    win8 app 相关的几个网站
    autp
    分析WPF代码工具
    mdsn
    线程和委托
    C#guanli
    学习Boost小结(一)
    Boost.test库的配置
    自己真是太没正事了.
  • 原文地址:https://www.cnblogs.com/coding4/p/5582471.html
Copyright © 2011-2022 走看看