理解angularjs中的$emit,$broadcast和$on
来源:互联网 发布:济南 知乎 编辑:程序博客网 时间:2024/04/28 11:30
在angularjs中提供了
1、$emit
该服务贯穿作用域发出一个向上的事件,并通知哪些注册在
<!DOCTYPE html><html><head> <title>Broadcasting</title> <script src="lib/angular.js"></script> <script> var app = angular.module('app', []); app.controller("firstCtrl", function ($scope) { $scope.$on('eventName', function (event, args) { $scope.message = args.message; console.log($scope.message); }); }); app.controller("secondCtrl", function ($scope) { $scope.handleClick = function (msg) { $scope.$emit('eventName', { message: msg }); }; }); </script></head><body ng-app="app"> <div ng-controller="firstCtrl" style="border:2px solid #E75D5C; padding:5px;"> <h1>Parent Controller</h1> <p>Emit Message : </p> <br /> <div ng-controller="secondCtrl" style="border:2px solid #428bca;padding:5px;"> <h1>Child Controller</h1> <input ng-model="msg"> <button ng-click="handleClick(msg);">Emit</button> </div> </div></body></html>
运行效果如下:
2、$broadcast
该服务发布一个向下的事件给作用域中的所有子节点以及以下的节点,并通知注册在
<!DOCTYPE html><html><head> <title>Broadcasting</title> <script src="lib/angular.js"></script> <script> var app = angular.module('app', []); app.controller("firstCtrl", function ($scope) { $scope.handleClick = function (msg) { $scope.$broadcast('eventName', { message: msg }); }; }); app.controller("secondCtrl", function ($scope) { $scope.$on('eventName', function (event, args) { $scope.message = args.message; console.log($scope.message); }); }); </script></head><body ng-app="app"> <div ng-controller="firstCtrl" style="border:2px solid #E75D5C; padding:5px;"> <h1>Parent Controller</h1> <input ng-model="msg"> <button ng-click="handleClick(msg);">Broadcast</button> <br /><br /> <div ng-controller="secondCtrl" style="border:2px solid #428bca;padding:5px;"> <h1>Child Controller</h1> <p>Broadcast Message : </p> </div> </div></body></html>
运行结果如下:
3、$on
该服务监听指定类型的事件,获取从
提示:
1、如果在作用域中没有父子关系存在,可以在控制器中注入$rootScope、使用$broadcast服务向下传播事件,但是不能通过$emit向上传播事件。2、在作用域中存在父子关系时,可以也仅可以由子控制器使用$emit服务向上传播事件,同时父作用域中的控制监听器可以注销事件。
[原文地址 Understanding
(http://www.dotnet-tricks.com/Tutorial/angularjs/HM0L291214-Understanding-
1 0
- 理解angularjs中的$emit,$broadcast和$on
- 理解angularjs中的$emit,$broadcast和$on
- 理解angularjs中的$emit,$broadcast和$on
- AngularJS中的$emit,$broadCast,$on
- angularjs------$emit, $broadcast, $on
- angularjs $on、$emit、$broadcast
- AngularJS: $broadcast $emit $on
- AngularJS的 $on、$emit和$broadcast使用
- AngularJS $on、$emit和$broadcast的使用
- AngularJS $on、$emit和$broadcast的使用
- AngularJS的学习--$on、$emit和$broadcast
- angularjs $emit $broadcast $on 通讯
- angularjs的$on、$emit、$broadcast
- AngularJS的$on、$emit、$broadcast
- angularjs的$on、$emit、$broadcast
- Angularjs中的事件广播 —$broadcast,$emit,$on
- Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
- Angularjs中的事件广播(全面解析$broadcast,$emit,$on)
- 【bzoj1042】 HAOI2008—硬币购物
- 【Linux系统编程】fork() 函数详解
- android framework broadcast 原理
- 图解Linux命令之--rm命令
- 在Android Studio运行NDK程序
- 理解angularjs中的$emit,$broadcast和$on
- Python:urllib 和urllib2之间的区别
- hdoj1869六度分离(floyd)
- 【Linux系统编程】vfork() 函数详解
- C++ Primer 第6章 知识点回顾
- 假设狗一年1岁,第3年和第5年个生出一条小狗,第六年死亡,计算第n年狗的个数(不考虑公母)
- URL重定向,referer,referrer和安全
- JavaIDE_MyEclipse生成可执行Jar文件
- unity3d 24