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事件参数,其对象的属性和方法如下

  • 相关阅读:
    vue-cli 安装一直失败
    如果不存在公缀,返回空字符串
    .sh文件格式问题dos转linux或unix
    Kettle串联多个Spark任务
    云效自动化部署+部署包备份
    云效分支管理
    云效IDE综合插件Alibaba Cloud Toolkit
    流水线自动化部署-中转部署-目标机器不联网情况下应用
    云效流水线自动化部署
    云效流水线自动发布到Maven仓
  • 原文地址:https://www.cnblogs.com/coding4/p/5582471.html
Copyright © 2011-2022 走看看