angularjs事件

一,angularjs $broadcast $emit $on的处理思想

在一个controller里面通过事件触发一个方法,在方法里面通过$broadcast或$emit来定义一个变量,在父,子controller里面通过$on来获取。

Paste_Image.png
1.phonecatControllers.controller('SelfCtrl', function($scope) {  
2.    $scope.click = function () {  
3.        $scope.$broadcast('to-child', 'child');  
4.        $scope.$emit('to-parent', 'parent');  
5.    }  
6.});  
7.  
8.phonecatControllers.controller('ParentCtrl', function($scope) {  
9.    $scope.$on('to-parent', function(d,data) {  
10.        console.log(data);         //父级能得到值  
11.    });  
12.    $scope.$on('to-child', function(d,data) {  
13.        console.log(data);         //子级得不到值  
14.    });  
15.});  
16.  
17.phonecatControllers.controller('ChildCtrl', function($scope){  
18.    $scope.$on('to-child', function(d,data) {  
19.        console.log(data);         //子级能得到值  
20.    });  
21.    $scope.$on('to-parent', function(d,data) {  
22.        console.log(data);         //父级得不到值  
23.    });  
24.});  
25.  
26.phonecatControllers.controller('BroCtrl', function($scope){  
27.    $scope.$on('to-parent', function(d,data) {  
28.        console.log(data);        //平级得不到值  
29.    });  
30.    $scope.$on('to-child', function(d,data) {  
31.        console.log(data);        //平级得不到值  
32.    });  
33.});  

3,点击Click me的输出结果

1.child
2.parent
用$broadcast赋的值,只能子级得到值;$emit赋的值,只能父级得到;而平级的什么都不能得到。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在AngularJS中,作用域是具有层次分明的结构。其中根层级也就是我们经常看到的$rootScope,其次是$S...
    Bennt阅读 5,045评论 0 0
  • 事件的传播 冒泡 要把事件沿着作用域链向上派送(从子作用域到父作用域),我们要使用$emit() 函数。 name...
    vanhukset阅读 1,501评论 0 0
  • 这是一个面试官问我的题目,当时没回答出来,主要是项目中没有碰到过这类问题,因此今天整理下查找到的资料,希望对大家有...
    一木_qintb阅读 4,053评论 0 2
  • 我敲着键盘 滴滴哒哒的 手指关节懒得伸直 门外有一支装修队 他们拿着簸箕来回走动 经过时候 我都会转头 看见手套在...
    许蜜蜜阅读 1,371评论 0 0
  • 时隔五个月,我终于点开了解忧小站的信箱。 里面静静躺着很多人的心事,突然感觉自己好像错过了某些人生命中最重要的时刻...
    陆小墨阅读 10,079评论 0 9