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

时间:2015-05-08 08:34:23

标签: javascript ionic-framework ionic

有人可以帮忙吗?

我试图检查我的离子项目中的互联网连接性何时丢失,它工作正常但事件由于某种原因连续两次触发。下面是我在$ 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');
   });
}

就像我说的那样有效但连续发射两次,所以当我想在互联网连接丢失时显示弹出窗口时会显示两次。

我检查了离子论坛,找到了一个有类似问题的家伙,但没有人给他一个确切的答案:http://forum.ionicframework.com

2 个答案:

答案 0 :(得分:7)

这是使用状态虚拟变量

的变通方法



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');
   });
}




答案 1 :(得分:0)

SharpEdge提供了一个很好的解决方法。

您还可以使用angular的$ watch服务来检查布尔值的变化,并且效果非常好。

此外,此链接有两个简洁的解决方法: http://www.yourtechchick.com/cordovanetwork-online-and-offline-events-fired-twice/