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事件参数,其对象的属性和方法如下
分类:
angular1
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别
· 如何不购买域名在云服务器上搭建HTTPS服务