通过$broadcast或$emit在子级和父级controller之间进行值传递
2015-12-18 22:46
429 查看
通过$broadcast或$emit在controller之间进行值传递,不过这些controller必须是子级或者父级关系, $emit只能向父级parent controller传递事件event与数据data,$broadcast只能向子级child controller传递event与data,$on用于接收event与data. <script> var myapp=angular.module('myapp',[]); myapp.controller('SelfCtrl', function($scope) { $scope.click = function () { $scope.$emit('to-parent', 'parent'); $scope.$broadcast('to-child', 'child'); } });//在当前控制器内,分别给父级控制器和子级控制器传递事件和数据 myapp.controller('ParentCtrl', function($scope) { $scope.$on('to-parent', function(d,data) { console.log(data); //父级控制器内监听上面控制器中$emit注册的事件和传递的值 }); $scope.$on('to-child', function(d,data) { console.log(data); //父级控制器内监听不到上面控制器中$broadcast注册的事件和传递的值,因为$broadcast注册的事件和传递的值是给子级的控制器的 }); }); myapp.controller('ChildCtrl', function($scope){ $scope.$on('to-child', function(d,data) { console.log(data); //同理 }); $scope.$on('to-parent', function(d,data) { console.log(data); //同理 }); }); myapp.controller('BroCtrl', function($scope){ $scope.$on('to-parent', function(d,data) { console.log(data); //平级得不到值,因为$broadcast或$emit只能给子级或父级controller传递事件和值 }); $scope.$on('to-child', function(d,data) { console.log(data); //同理 }); }); </script> <body ng-app="myapp"> <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>
原文:http://blog.51yip.com/jsjquery/1602.html
用rootscope定义的值,可以在各个controller中使用: var myapp=angular.module('myapp',[]); myapp.controller('TestCtrl1',['$scope','$rootScope', function($scope,$rootScope) { $rootScope.name = '123'; } ]); myapp.controller('TestCtrl2',['$scope','$rootScope', function($scope,$rootScope) { $scope.name = $rootScope.name; } ]); <div ng-controller="TestCtrl1"> Iset the global variable.<strong>{{$root.name}}</strong> </div> <div ng-controller="TestCtrl2"> 1,get global variable .<strong>{{name}}</strong><br> 2,get global variable .<strong>{{$root.name}}</strong> </div>
相关文章推荐
- win快捷键
- HashMap排序
- Cstyle的札记,Freertos内核详解,第5.0篇
- T-sql语句查询执行顺序
- 不用vim设定IP
- 服务器socket与安卓端socket对接
- PHP7新特性介绍
- JAVA中如何将大数字或字符串放进数组
- 1065. A+B and C (64bit) (20)【逻辑】——PAT (Advanced Level) Practise
- R-3.1.2环境安装搭建
- WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法
- 最优化方法及其数学模型(一)
- Eclipse之导入导出
- 工厂方法模式(head first读书笔记)
- 深入浅出Mybatis-与Spring集成
- Java解析Json字符串--单个实体
- 1064. Complete Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise
- STL中的Vector相关用法
- 非递归层次遍历方法实现二叉树中指定节点的层次数查找
- 平衡二叉树(AVL树) ----- C语言