飞溅屏后的离子白屏

时间:2017-01-12 09:06:50

标签: android cordova ionic-framework wifi

我写了一个脚本来检测是否有wifi连接。但是,我注意到,如果应用程序在没有wifi连接的情况下启动,则启动画面将加载,然后我将获得白屏。控制台显示此错误:

  

无法加载资源:net :: ERR_INTERNET_DISCONNECTED

这是我检测wifi的脚本,它位于&ion; $ ionicPlatform.ready':

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

    //display error msg and close the app.
    function connectionerror($ionicPopup,$scope)
    {
      var myPopup = $ionicPopup.show({ 
        title: 'Network Error',
        content: 'No internet connectivity detected. Please try again.',
        buttons: [
        {
          text: '<b>Retry</b>',
          type: 'button-positive',
          onTap: function(e) 
          {
            if (!$cordovaNetwork.isOnline()) 
            {
              e.preventDefault();  
            }
            else 
            {
              $state.reload();
            }
          }
        }]
      });
    } 

如何修复它以便在启动画面后,如果没有wifi,则会显示消息?

1 个答案:

答案 0 :(得分:0)

当您尝试从PC加载资源时,会发生错误。如果您正在运行离子服务或离子服务直播并断开wifi,应用程序将尝试使用wifi从您的电脑加载模板并且无法完成。

要测试该脚本,您应该构建应用程序并在设备上运行它。

如果它正常工作,控制器应该以不同的方式工作。看起来应该更像这样:

.controller('controller', function($scope, $rootScope, $state, $ionicPopup, $cordovaNetwork){
    $rootScope.$on('$cordovaNetwork:offline', function(event, networkState)
      {
        connectionerror()
      })

    //display error msg and close the app.
    function connectionerror()
    {
      var myPopup = $ionicPopup.show({ 
        title: 'Network Error',
        content: 'No internet connectivity detected. Please try again.',
        buttons: [
        {
          text: '<b>Retry</b>',
          type: 'button-positive',
          onTap: function(e) 
          {
            if (!$cordovaNetwork.isOnline()) 
            {
              e.preventDefault();  
            }
            else 
            {
              //go to a state like index or home instead of reload. Reload resets the application and should be avioded in single page apps
              $state.go('...'); 
            }
          }
        }]
      });
    } 
})