当前位置:   article > 正文

angular $scope.$broadcast广播 $scope.$on调用多次解决方案

$scope.$broadcast

a.ctl.js 广播

  $scope.$broadcast('selectTempDays', tempD);
  • 1

b.ctl.js 接收

$scope.$on('selectTempDays', function(event, tempDays){
	//do somthing
});
  • 1
  • 2
  • 3

调试发现$on会调用多次导致处理结果不准确

解决:

  1. 利用全局变量 flag

定义一个全局可共享变量,这里我放在了关联的Service

this.onFlag = false;
  • 1

广播之前设置一下

Service.onFlag = false;
$scope.$broadcast('selectTempDays', tempD);
  • 1
  • 2

接收

$scope.$on('selectTempDays', function(event, tempDays){
	if(!Service.onFlag){
	  //do somthing
	  Service.onFlag = true;
	}
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. $destory 把广播销毁
let test = $scope.$on('selectTempDays', function(event, tempDays){
	  //do somthing
});
  • 1
  • 2
  • 3
$scope.$on('$destroy',function(){
		test();
	});
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/222802
推荐阅读
相关标签
  

闽ICP备14008679号