Javascript 在线和离线事件触发两次

Javascript 在线和离线事件触发两次,javascript,ionic-framework,ionic,Javascript,Ionic Framework,Ionic,有人能帮忙吗 我试图检查我的ionic项目中的互联网连通性何时丢失,它工作正常,但由于某种原因,事件连续发生了两次。下面是我在$ionicPlatform.ready中的app.js中的代码: if (window.Connection) { $rootScope.$on('$cordovaNetwork:online', function (event, networkState) { console.log('We Are Online'); }); $r

有人能帮忙吗

我试图检查我的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');
   });
}
就像我说的,它可以工作,但会连续触发两次,所以当我想在internet连接断开时显示一个弹出窗口时,它会显示两次


我查看了爱奥尼亚论坛,发现一个人有类似的问题,但没有人给他一个确切的答案:

这是一个使用状态虚拟变量的解决方法

var isOnline=true;
if(窗口连接){
$rootScope.$on(“$cordovaNetwork:online”,函数(事件,网络状态){
if(isOnline)返回;
isOnline=真;
log(“我们在线”);
});
$rootScope.$on(“$cordovaNetwork:offline”,函数(事件,网络状态){
如果(!isOnline)返回;
isOnline=false;
log(“我们离线”);
});

}
SharpEdge提供了一个非常好的解决方案

您还可以使用angular的$watch服务来检查布尔值的变化,它工作得非常好

此外,在该链接中还有两种巧妙的解决方法:

您可以使用状态作为解决方法这是一个很好的解决方法,但是,我们不应该找到这种不一致的根源吗?为什么第一次叫两次?