基于angularJS的发布订阅

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

<script src="angular.min.js"></script>
<script>
var app = angular.module("app",[]);
	app.controller('SelfCtrl', function($scope) {
  $scope.click = function () {
    $scope.$broadcast('child', 'child12');
    $scope.$emit('to-parent', 'parent');
  }
});

app.controller('ParentCtrl', function($scope)  {
  $scope.$on('to-parent', function(event,data) {
    console.log('ParentCtrl', data);	   //父级能得到值
  });
  $scope.$on('to-child', function(event,data) {
    console.log('ParentCtrl', data);	   //子级得不到值
  });
});

app.controller('ChildCtrl', function($scope){
  $scope.$on('child', function(event,data) {
    console.log('ChildCtrl', data);		 //子级能得到值
  });
  $scope.$on('to-parent', function(event,data) {
    console.log('ChildCtrl', data);		 //父级得不到值
  });
});

app.controller('BroCtrl', function($scope){  
  $scope.$on('to-parent', function(event,data) {  
    console.log('BroCtrl', data);		  //平级得不到值  
  });  
  $scope.$on('to-child', function(event,data) {  
    console.log('BroCtrl', data);		  //平级得不到值  
  });  
});
</script>
</body>
posted @ 2016-10-13 18:36  Muno  阅读(547)  评论(0编辑  收藏  举报