博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angularjs中控制器之间的通信----$on、$emit和$broadcast解析
阅读量:7063 次
发布时间:2019-06-28

本文共 1494 字,大约阅读时间需要 4 分钟。

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

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

例如:

  

app.controller('SelfCtrl', function($scope) {    $scope.click = function () {
$scope.$broadcast('to-child', '我传给子控制器的数据'); $scope.$emit('to-parent', '我传给父控制器的数据'); }});app.controller('ParentCtrl', function($scope) { $scope.$on('to-parent', function(event,data) { //监听to-parent console.log('ParentCtrl', data); //父级能得到值 }); $scope.$on('to-child', function(event,data) { console.log('ParentCtrl', data); //子级得不到值 });});app.controller('ChildCtrl', function($scope){ $scope.$on('to-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); //平级得不到值 }); });

  

最终结果

ParentCtrl  我传给父控制器的数据

ChildCtrl     我传给子控制器的数据

 

备注:当然service也可以在不同controller中通信

 

转载于:https://www.cnblogs.com/8080zh/p/9288015.html

你可能感兴趣的文章
Linux软件包管理{rpm|yum|源码包}2015082901
查看>>
SQL Server2008R2安装
查看>>
如何下载在线视频:流行视频FLV下载
查看>>
杭电 hdu 2016
查看>>
常见Java开源JMS消息中间件及特性简介
查看>>
java-web项目跨域的问题
查看>>
linux下网桥的设置
查看>>
模块和包
查看>>
无线网络受限制或无连接
查看>>
Java学习:Java字符串处理
查看>>
启用lync用户时出错
查看>>
ORACLE 绑定变量用法总结
查看>>
我的友情链接
查看>>
SPAN
查看>>
路由器命令行翻译工具
查看>>
我的友情链接
查看>>
Linux下重启网络服务
查看>>
随笔-I/O流
查看>>
Cent OS下修改用户打开文件数限制
查看>>
我的友情链接
查看>>