2016-07-29 16 views
0

UI-Routerとネストされたビューを使用して、anglejsで構築された単一ページのアプリケーションがあります。私のコードは次のようになります:角度UIルータ、ネストされたビューを解決する

app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider' ,'$mdDateLocaleProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, $mdDateLocaleProvider, $locationProvider) { 
var rootpath = config.paths.components; 
$stateProvider.state('home', { 
    url: '/', 
    views: { 
     index: { 
      templateUrl: rootpath + '_root/template.html', 
      controller: "RootController" 
     }, 
     "[email protected]": { 
      templateUrl: rootpath + 'header/header-template.html', 
      controller: "HeaderController" 
     }, 
     "[email protected]": { 
      templateUrl: rootpath + 'sidebar/sidebar-template.html', 
      controller: "SidebarController" 
     }, 
     "[email protected]": { 
      templateUrl: rootpath + 'main/main-template.html', 
      controller: "MainController" 
     } 
    }, 
    resolve: { 
     authorize: ['RootService', function (RootService) { 
     var auth = RootService.getKey(); 
     return RootService.getConfig(auth.key); 
     }] 
    }, 
}); 

$urlRouterProvider.otherwise('/'); 

}]).run(['$rootScope', '$state', '$window', function($rootScope, $state, $window){ 
    $rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error){ 
    $window.location = error.status +'.html'; 
}); 

"home"状態では、渡された認証キーが有効かどうかを確認しています。

キーが無効または期限切れの場合、$stateChangeErrorイベントはエラーをキャッチし、ユーザーをエラーページにリダイレクトします。

これは、アプリケーションの起動時および更新時に正常に機能します。

キーが期限切れ(10分間有効)でアプリケーションが再フォーマットされないと、 $stateChangeErrorイベントがエラーメッセージをキャッチしないという問題があります。

これを修正する方法についてのご意見はありますか?

+0

...これはあなたの問題を解決するかもしれないと思う。HTML '; – atul

答えて

0

角度jsによって提供される$ watchを使用すると、この問題を解決できます。

$scope.$watch(function(scope) { return scope.data.myVar }, 
      function() {} 
     ); 

最初の関数はvalue関数で、2番目の関数はリスナー関数です。 この例のvalue関数は、$ scope変数scope.data.myVarを返します。この変数の値が変更されると、別の値が返され、AngularJSはリスナー関数を呼び出します。

私はあなたがそこにキー自体を無効にしているあなたのコードにあなたは$ window.locationの= error.status +」としてページをリダイレクトしようとすることができますどこ

+0

ありがとう、これは問題を解決しました。 –

関連する問題