如何在作用域之间通信呢?
1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信。
2.通过作用域中的事件处理通信。但是这种方法有一些限制;例如,你并不能广泛的将事件传播到所有监控的作用域中。你必须选择是否与父级作用域或者子作用域通信。 $on、$emit和$broadcast使得event、data在controller之间的传递变的简单。
$emit:子传父 传递event与data
$broadcast:父传子 child controller传递event与data
$on:监听或接收数据。。用于接收event与data $broadcast、$emit事件必须依靠其他事件(ng-click等)进行触发,而不能单纯写一个这个。。
$on倒是可以直接写,因为它属于监听和接收数据的。 $on的方法中的event事件参数:
event.name 事件名称
event.targetScope 发出或者传播原始事件的作用域
event.currentScope 目前正在处理的事件的作用域 event.stopPropagation() 一个防止事件进一步传播(冒泡/捕获)的函数(这只适用于使用`$emit`发出的事件)
event.preventDefault() 这个方法实际上不会做什么事,但是会设置`defaultPrevented`为true。直到事件监听器的实现者采取行动之前它才会检查`defaultPrevented`的值。
event.defaultPrevented 如果调用了`preventDefault`则为true
 1 <style>
2 div{border:1px solid #ff7300;padding:20px;margin:10px;border-radius: 5px;}
3 </style>
4 <div ng-controller="ParentController"><!--父级-->
5 <div ng-click="clkP()">click--给child</div>
6 <div ng-controller="OneSelfController"><!--自己-->
7 <span ng-click="clkme()">click me</span>
8 <div ng-controller="ChildController">
9 它是OneSelfController的子级
10 </div><!--子级-->
11 </div>
12 <div ng-controller="siblingsController">
13 它与OneSelfController是平级
14 </div><!--平级-->
15 </div>
16
17 <script>
18 var app=angular.module('firstApp',[]);//app模块名
19 app.controller('OneSelfController',function($scope){
20 $scope.clkme=function(){
21 $scope.$broadcast('sendChild','我给子控制器传递数据');
22 $scope.$emit('sendParent','冒泡到父元素')
23 }
24 }).controller('ParentController',function($scope){
25 $scope.$on('sendParent',function(event,data){//监听在子控制器中定义的 sendParent 事件
26 console.log('OneSelfController传过来的',data,event.name,event);//事件名称:sendParent
27 });
28 $scope.clkP=function(){
29 $scope.$broadcast('sendAllChild','让siblingsController接收到');
30 }
31
32 }).controller('ChildController', function($scope){
33 $scope.$on('sendChild', function(event,data) {//监听在子控制器中定义的 sendChild 事件
34 console.log('ChildCtrl', data,event.name,event);// 事件名称:sendChild
35 });
36 }).controller('siblingsController', function($scope){
37 $scope.$on('sendAllChild',function(event,data) {
38 console.log('值过来吧', data);
39 });
40 //下面事件不会触发
41 $scope.$on('sendParent', function(event,data) {
42 console.log('平级得不到值', data);
43 });
44 $scope.$on('sendChild', function(event,data) {
45 console.log('平级得不到值', data);
46 });
47 });
48
49 </script>

最新文章

  1. JHipster框架的简要搭建与说明
  2. u-boot移植 II
  3. Java-用switch判断季节
  4. FormsAuthentication身份认证源代码
  5. tomcat部署https
  6. 【转】 void与void*详解
  7. [转载~笔记]CentOS单独编译安装PHP gd库扩展
  8. 转:EasyHook远程代码注入
  9. 用Telnet发送HTTP请求
  10. sqlserver 字符串相关函数
  11. js实现一个砖头在页面拖拉效果
  12. IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到&quot;错误一例。
  13. 不能执行已释放script的代码
  14. 与一线Linux嵌入式开发project师的对话
  15. CentOS6.9-zabbix3.2启动失败原因及页面没有mysql选择项
  16. [Micropython]TPYBoard v10x MFRC522智能门禁系统
  17. 浅谈Java语言中try{}catch{}和finally{}的执行顺序问题
  18. c# .net core 设置缓存
  19. mongo 数据查询
  20. cdnbest常见问题

热门文章

  1. asp.net配置web.config支持jQuery.Uploadify插件上传大文件
  2. kvm初试0
  3. 通过SmartGit把java maven项目传到码云
  4. volatile关键字 学习记录2
  5. phpstorm 使用技巧
  6. 移动前端开发之viewport的深入理解
  7. 03 Yarn 原理介绍
  8. string.Format格式化用法详解
  9. 对AutoIt中控件和窗口的理解
  10. mysql导出部分表数据