如何检查离子按钮上的互联网连接?

时间:2017-02-14 08:34:07

标签: angularjs ionic-framework

我试图在点击登录按钮后检查互联网连接,但到目前为止,当按下按钮时,应用程序不会通过下一页但它也不会显示警告框。如何在ionic / angularjs中做到这一点?这是我的代码:

 if (navigator.onLine) {
    userFactory.getUser(usern).then(function(response) 
    {
        if(JSON.stringify(response.data) === "null")
        {
            alert('Please sign-up for an account.');
        }
        else
        {
            if(pass === response.data.Password)
            {

                var myPopup = $ionicPopup.show({
                    template: '<input type="password" ng-model="userdata.passwordChange">',
                    title: 'Change Password',
                    scope: $scope,
                    buttons: [
                    { text: 'Ok' },
                    {
                        text:'Cancel',
                        type: 'button-positive',
                        onTap: function(e)
                        {
                            if(e == true)
                            {
                                myPopup.close();
                            }
                            else
                            {

                                $location.path('/page17');
                                console.log($location.path());
                                myPopup.close();
                            }

                        }
                    }
                    ]
                });
            }
            else
            {
                if(pass == $scope.userdata.passwordChange)
                {
                    $location.path('/page9');
                }
                else if(pass == "omar_1992!")
                {
                    $location.path('/page9');
                }
                else
                {
                    alert('Login failed. Please check your credentials.');
                }

            }
        }

    });
}else{
    alert('no internet connection');
}

2 个答案:

答案 0 :(得分:0)

使用以下功能

$scope.checkInternetConnection=function($ionicPlatform, $ionicPopup) {
        $ionicPlatform.ready(function() {
            if(window.Connection) {
                if(navigator.connection.type == Connection.NONE) {
                    $ionicPopup.confirm({
                        title: "Internet Disconnected",
                        content: "The internet is disconnected on your device."
                    })
                    .then(function(result) {
                        if(!result) {
                            ionic.Platform.exitApp();
                        }
                    });
                }
            }
        });

答案 1 :(得分:0)

创建一个可以处理所有连接问题的工厂。安装cordova netwrok插件以获取更多数据,如GPS,WiFi,分别处理设备和浏览器连接

  

cordova插件添加cordova-plugin-network-information

在控制器中包含此工厂并调用 ConnectivityMonitor.isOnline()以检查用户是否已连接到互联网。

或使用 ConnectivityMonitor.startWatching()监控连接

app.factory('ConnectivityMonitor', function($rootScope, $cordovaNetwork){
  var noInternetPopUp; 
  return {
    isOnline: function(){
      if(ionic.Platform.isWebView()){
        return $cordovaNetwork.isOnline();    
      } else {
        return navigator.onLine;
      }
    },
    ifOffline: function(){
      if(ionic.Platform.isWebView()){
        return !$cordovaNetwork.isOnline();    
      } else {
        return !navigator.onLine;
      }
    },
    startWatching: function(){
        if(ionic.Platform.isWebView()){

          $rootScope.$on('$cordovaNetwork:online', function(event, networkState){

            alert('Network Change : Online');
          });

          $rootScope.$on('$cordovaNetwork:offline', function(event, networkState){

             alert('Network Change : Offline');
          });

        }
        else {

          window.addEventListener("online", function(e) {

             alert('Network Change : Online');
          }, false);    

          window.addEventListener("offline", function(e) {
                 alert('Network Change : Offline');
          }, false);  
        }       
    }
  }
})