$broadcast、$on、$emit,angular不同级控制器之间的传值

工作中经常用到的是$broadcast、$on,$emit自己用的很少。

一.关于$broadcast事件:该服务发布一个向下的事件从父作用域开始传给下面所有的子作用域(包括自己),并通知$on接收,该事件的生命周期也是从broadcast被启动开始。下面的所有使用$on接收的作用域都会接收到通知。之后,事件向下传播,在这期间,作用域中的监听器接收到通知,获取事件,但是不会注销事件,事件继续往下传播。

1.实现方式:只需在后面加一行代码即可:$scope.$broadcast("自定义的事件名--eventName",“要传输的数据--args”)

2.使用$scope.$broadcast():意味着父子控制器传值,即把父控制器的数据,传给它下面所有的字控制器。使用$rootScope.$broadcast():意味着把值从根作用域开始,传给所有用$on接收的控制器。

二.关于$on方法:监听指定类型(eventName)的事件,获取传输的数据

1.实现方式:$scope.$on("eventName",function(event,data){

        其中eventName:需要监控的事件的名称;

        event:事件的相关对象

        data:事件传播的数据。

})

 

小技巧a.使用$rootScope.$broadcast()广播事件时,一般使用$scope.$on()接收时,数据传输只能接收一次,使用$rootScope.$on()则可以多次接收

b.使用$scope.$on为避免多次调用接口,可写一行代码:$scope.$$listeners.eventName = [];

三.关于$emit事件:该服务贯穿作用域发出一个向上的事件,从子级作用域往根作用域传播(包括自己),该事件的生命周期开始于emit被启动的地方,传递期间并通知那些注册在作用域上的监听器$on,如果这期间一个监听器接受到了这个事件,会注销这个事件,那么事件将会停止向上继续传播。

1.使用方法: $scope.$emit("自定义的事件名--eventName",“要传输的数据--args”)

转载于:https://www.cnblogs.com/firstsightcc/p/7231154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值