AngularJS的学习--$on、$emit和$broadcast的使用
发布时间:2020-12-17 10:33:02 所属栏目:安全 来源:网络整理
导读:$emit只能向parent controller传递event与data $broadcast只能向child controller传递event与data $on用于接收event与data 示例代码如下: !DOCTYPE html html ng-app= "app" head meta charset= "UTF-8" title / title script src= "angular.js" / script s
示例代码如下:
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="UTF-8"> <title></title> <script src="angular.js"></script> <script> var app = angular.module("app",[]) app.controller('SelfCtrl',function($scope) { $scope.click = function () { $scope.$broadcast('to-child','child'); $scope.$emit('to-parent','parent'); } }); app.controller('ParentCtrl',function($scope) { $scope.$on('to-parent',function(event,data) { console.log('ParentCtrl',data); //父级能得到值 console.log(111); }); $scope.$on('to-child',data); //子级得不到值 console.log(222); }); }); app.controller('ChildCtrl',function($scope){ $scope.$on('to-child',data) { console.log('ChildCtrl',data); //子级能得到值 console.log(333); }); $scope.$on('to-parent',data); //父级得不到值 console.log(444); }); }); app.controller('BroCtrl',function($scope){ $scope.$on('to-parent',data) { console.log('BroCtrl',data); //平级得不到值 console.log(555); }); $scope.$on('to-child',data); //平级得不到值 console.log(666); }); }); </script> </head> <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> </body> </html>结果:
$emit和$broadcast可以传多个参数,$on也可以接收多个参数。
在$on的方法中的event事件参数,其对象的属性和方法如下
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |