0

私は$ionicModalと少し問題があります。私はモーダルを開くたびに、空のルートを強制して$urlRouterProvider.otherwise('/login');を発生させます。私は$urlRouterProviderを私の設定から取り除くとうまくいきますが、私のアプリは空白の画面になるだけです。誰もがこの問題の原因を知っていますか?私は私のFeedController内部はかなり標準的にイオンのモーダルを呼んでいる:

$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認証を確認するために解決しています言及する必要があります。イムは、これはログイン画面にユーザーをリダイレクトし、$stateChangeErrorがありますかどうかを確認するために$rootScopeに聞いて、これは、したがって$urlRouterProvider行削除、問題ではないようです。

$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) { 
    if (error === 'AUTH_REQUIRED') { 
    $state.go('login'); 
    } 
}); 

私もだがFeedControllerLoginControllerのキャッシュをクリアします。 $ ionicModalsでこの問題を経験した人はいますか?もしあなたが手伝ってくれたら教えてください。親切にありがとう。

答えて

1

これを体験している他の人のためにここに投稿したいと考えています。私は解決策を考え出した。これは、ルート変更の原因となる<a>要素のハッシュであるhref="#"によって引き起こされました。この場合、$urlRouterProviderに空白のルートがあると思いますか?

+0

ありがとうございました!あなたはちょうど私の頭を壁に置くことから私を救った。 :) – WonderGrub

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) 
}); 
関連する問題