离子加载器:$ ionicLoading.show()问题,第一次没有调用加载器

时间:2016-11-20 18:51:43

标签: android angularjs cordova ionic-framework angular-ui-router

我遇到了$ ionicLoading指令这个奇怪的问题。我试图在每次状态变化时显示加载器。

.run(['$rootScope','$ionicLoading', function ($rootScope, $ionicLoading){
  $rootScope.$on('loading:show', function () {
    $rootScope.loading = $ionicLoading.show({
        template: '<ion-spinner icon="android"></ion-spinner>',
        delay: 1
    }).then(function(){
      console.log('showing loader');
    }, function(error){
      console.log('something is breaking');
    });
  });
  $rootScope.$on('loading:hide', function () {
   $ionicLoading.hide();
  });
  $rootScope.$on('$stateChangeStart', function () {
    console.log('please wait...');
    $rootScope.$broadcast('loading:show');
 });

 $rootScope.$on('$stateChangeSuccess', function () {
   console.log('done');
   $rootScope.$broadcast('loading:hide');
  });
}]);

在页面加载或stateChangeStart上,$ ionicLoading.show()被调用但是它将promise作为错误返回(错误:取消,某些内容正在打印)&amp;因此装载机没有显示。

现在如果我在隐藏事件之后调用$rootScope.$broadcast('loading:show');上的$stateChangeSuccess事件,则显示加载程序。 (我只是在玩游戏时才知道这一点。)

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
    $ionicLoading.show();
});

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
    $ionicLoading.hide();
});

$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
    console.error(error);
    $ionicLoading.hide();
});