$ ionicModal强制路线改变

时间:2016-07-09 01:51:51

标签: angularjs ionic-framework firebase angularfire firebase-authentication

我的$ionicModal有点麻烦。每当我打开一个模态时,它会强制一条空路线导致$urlRouterProvider.otherwise('/login');发生。如果我从我的配置中取出$urlRouterProvider,它可以正常工作 - 但是我的应用只是启动到空白屏幕。有谁知道导致这个问题的是什么?我在FeedController

中非常标准地调用Ionic模态
$ionicModal.fromTemplateUrl('templates/views/view.html', {
  scope: $scope,
  animation: 'slide-in-up'
}).then(function(modal) {
  $scope.modal = modal;
});

$scope.modal.show().then(function() {
  // Blah
});

我的配置如下:

$stateProvider
  .state('login', {
    url: '/login',
    templateUrl: 'templates/login.html',
    controller: 'LoginController',
    resolve: {
      'currentAuth': function(Auth) {
        return Auth.checkAuth().$waitForAuth();
      },
      'clearCache': function($ionicHistory) {
        return $ionicHistory.clearCache();
      }
    }
  })
  .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/main.html',
    controller: 'SideMenuController',
    resolve: {
      'currentAuth': function(Auth) {
        return Auth.checkAuth().$waitForAuth();
      }
    }
  })
  .state('app.feed', {
    url: '/feed',
    views: {
      'viewContent': {
        templateUrl: 'templates/views/feed.html',
        controller: 'FeedController',
        resolve: {
          'currentAuth': function(Auth) {
            return Auth.checkAuth().$requireAuth();
          },
          'clearCache': function($ionicHistory) {
            return $ionicHistory.clearCache();
          }
        }
      }
    });

  $urlRouterProvider.otherwise('/login');
});

我还应该提到我在解决状态加载之前检查AngularFire身份验证。我正在聆听$rootScope以查看是否有$stateChangeError,然后这会将用户重定向到登录屏幕,但这似乎不是问题,因此删除{ {1}}行:

$urlRouterProvider

我还要清除$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { if (error === 'AUTH_REQUIRED') { $state.go('login'); } }); FeedController解析的缓存。有没有人遇到过$ ionicModals这个问题?如果你能提供帮助,请告诉我。谢谢你。

2 个答案:

答案 0 :(得分:1)

我将函数包装在try catch块中,还有一些额外的错误检查可以提供更多的洞察力。

此外,您假设$ionicModal.fromTemplateUrl已立即解决,因为您在调用$scope.modal.show()时未确保您确实拥有模式。

$ionicModal.fromTemplateUrl('templates/views/view.html', {
  scope: $scope,
  animation: 'slide-in-up'
}).then(function(modal) {
  $scope.modal = modal;

   return modal.show();

}, function(_error) {
   console.log(_error)
});

答案 1 :(得分:1)

想在这里发帖给其他遇到此事的人。我找到了解决方案。它是由[ngClass]="isOpen ? ['collapse', 'hidden-xs', 'visible-xs'] : []" 元素上的哈希href="#"导致路由更改引起的。我猜<a>在这种情况下看到一条空白路线?