2016-03-28 4 views
0

私は同じ状態にリダイレクトする状態変更コールバックを持っています。ユーザーがURLを変更して間違った表示がレンダリングされた場合

$rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {   
    if (toState.name != 'wsConnect') { 
     console.log("change path!!"); 
     $location.path('/connect');     

    } 
    }); 

ユーザーが新しいタブを開き、任意のURLアンカーで経路を入力すると、最初からうまく動作します。ユーザーがコールバックからのビューを表示しますが、 ユーザーが手動でアンカーを変更してヒットした場合、 コールバックが半分で機能します。アンカー値は回復されますが、ユーザーはアンカーからではなくルートのビューを表示します。

ページをリロードすると「バグ」が消えます。

私は回避策が見つかりました:

if (toState.name != 'wsConnect') { 
     console.log("change path!!"); 
     $interval(function() { 
      $state.go('wsConnect'); 
      $location.path('/connect'); 
     }, 1, 1); 
    } 
+1

チェック[、最小完全、かつ検証例を作成する方法](http://stackoverflow.com/help/mcve)と私たちは何であるかの良いアイデアを持つことができますので、あなたの答えを強化してくださいあなたのコードで起こっている。 –

答えて

1

たぶんDOMがレンダリングされる前に、ビューは、ロードを開始したら解雇 $viewContentLoadingを使用することを検討してください。 '$ rootScope'はイベントをブロードキャストします。

https://github.com/angular-ui/ui-router/wiki#view-load-events

+0

Thx、viewContentLoadedを使用しないでください。また、手動で状態を設定する必要がありました。 –

関連する問題