简体   繁体   English

在线和离线事件都会发射两次

[英]Online and offline event are firing twice

Can someone please help? 有人可以帮忙吗?

I trying to check when internet conectivity is lost in my ionic project, It is working fine but the event fires twice in a row for some reason. 我试图在我的离子项目中检查互联网连接性何时丢失,它工作正常但事件由于某种原因连续两次触发。 below is my code in my app.js in $ionicPlatform.ready: 下面是我在$ ionicPlatform.ready的app.js中的代码:

if (window.Connection) {

   $rootScope.$on('$cordovaNetwork:online', function (event, networkState) {
       console.log('We Are Online');
   });

   $rootScope.$on('$cordovaNetwork:offline', function (event, networkState) {
       console.log('We Are Offline');
   });
}

Like I said it works but fires twice in a row, so when I want to display a popup when internet connection is lost it is displayed twice. 就像我说它可以工作但连续两次触发,所以当我想在互联网连接丢失时显示一个弹出窗口,它会显示两次。

I checked the ionic forum and found a guy with a similar problem but no one really gave him an exact answer: http://forum.ionicframework.com 我检查了离子论坛,发现一个有类似问题的人,但没有人给他一个确切的答案: http//forum.ionicframework.com

This is a workaround using a state dummy var 这是使用状态虚拟var的变通方法

 var isOnline = true; if (window.Connection) { $rootScope.$on('$cordovaNetwork:online', function (event, networkState) { if(isOnline) return; isOnline = true; console.log('We Are Online'); }); $rootScope.$on('$cordovaNetwork:offline', function (event, networkState) { if(!isOnline) return; isOnline = false; console.log('We Are Offline'); }); } 

SharpEdge has provided a pretty good workaround. SharpEdge提供了一个非常好的解决方法。

You can also use angular's $watch service to check for the change in boolean value and it works pretty well. 您还可以使用angular的$ watch服务来检查布尔值的变化,它的效果非常好。

Also, There are 2 neat workarounds here at this link: http://www.yourtechchick.com/cordovanetwork-online-and-offline-events-fired-twice/ 此外,此链接有两个简洁的解决方法: http//www.yourtechchick.com/cordovanetwork-online-and-offline-events-fired-twice/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM