你的位置:首页 > Java教程

[Java教程]angularJS广播


控制器之间共享数据(向父级/子级控制器传递event,data),类似于service在不同的控制器中通信

html:

<div ng-controller="ParentCtrl">  <div ng-controller="SelfCtrl">    <a ng-click="click()">click</a>    <div ng-controller="ChildCtrl"></div>  </div>  <div ng-controller="BroCtrl"></div></div>

js:

angular.module('myApp', [])  .controller('SelfCtrl', ['$scope','$rootScope', function($scope, $rootScope){    var admin1 = {      'name': 'father',      'age': 45    };    var admin2 = {      'name': 'Lucy',      'age': 25    };    $scope.click = function() {      //事件的发送      //向子级控制器传递数据和事件,只有ChildCtrl能接受到广播,还有自己      $scope.$broadcast('to-child', admin2);      //向父级控制器传递数据和事件,只有parentCtrl能接收到广播,还有自己      $scope.$emit('to-parent', admin1);      //$rootScope发出的广播所有的作用域都可以接受到,      $rootScope.$broadcast('to-bro', '平级的数据');    }  }]).controller('ParentCtrl', ['$scope', '$rootScope', function($scope, $rootScope){    //事件的接受    $scope.$on('to-parent', function(event, data){      console.log(event);    });  }]).controller('ChildCtrl', ['$scope', '$rootScope', function($scope, $rootScope){    $scope.$on('to-child', function(event, data){      console.log(data);    });  }]).controller('BroCtrl', ['$scope', '$rootScope', function($scope, $rootScope){    //$scope和$rootScope都可以接受到事件    $scope.$on('to-bro', function(event, data){      console.log(data);    });    $rootScope.$on('to-bro', function(event, data){      console.log(data);    });  }]);