2017-11-16 3 views
0

응용 프로그램이 오프라인 모드로 전환되면 이벤트 수신기가 여러 번 실행되고 한 번만 발사하는 방법이 있습니다."offline"에 대한 addEventListener가 이온으로 여러 번 발사

$rootScope.$on('$ionicView.afterEnter', function (event, view) { 

    $rootScope.online = navigator.onLine; 
    var popup; 

    $window.addEventListener("offline", function() { 
     $rootScope.$apply(function() { 
     $rootScope.online = false; 
     popup = $ionicPopup.confirm({ 
      title: 'Network Problem', 
      content: 'Sorry, Please Check Your Network Connection.' 
     }) 
     }); 
    }, false); 
    $window.addEventListener("online", function() { 
     $rootScope.$apply(function() { 
     $ionicLoading.show({ 
      template: '<p>Loading...</p><ion-spinner></ion-spinner>', 
     }); 
     $rootScope.online = true; 
     $state.reload(); 
    }, false); 
}); 

답변

0

캐시를 삭제하면 이벤트 발생이 한 번만 수행됩니다.

$rootScope.$on('$ionicView.afterLeave', function (event, view) { 
    $ionicHistory.clearCache(); 
}); 
관련 문제