2017-03-15 6 views
0

私は簡単な質問だと思っていますが、Googleでは見つかりませんでした。私は角度1.5とui-router 1.5を使用しています。現在のui-view状態が次のui状態であるかどうかを確認するにはどうすればよいですか? (私はバックボタンを押すか、直接リンクを介してされたときに現在のUIビューがロードされているかどうかを確認したいので、これが必要です)ui-stateがフォワードui-stateを持っているか確認してください

Case 1 
-------- 
view1 -> view2 -> view3 // now I have pressed back button 
view1 -> view2 ? // Here view2 actually had next state that was view3 

Case 2 
-------- 
view1 -> view4 -> view2 //Here view2 do not have next ui-state 

私は$ionicHistory.forwardView()を使用して試してみましたが、それは常にnullを返します。理由は分かりませんか?どんな助けでも大歓迎です。

+0

いくつかのビューが特定のビュー(ビュー2)の子ビューであることを理解する論理的な方法はありますか? – tanmay

+0

[角度を使用してブラウザのバックボタンクリックイベントを検出する方法は?](http://stackoverflow.com/questions/15813850/how-to-detect-browser-back-button-click-event-using-angular) – tanmay

答えて

0

4時間のグーグル後、私はカスタムソリューションを考え出しました。共有したい適切なエラー処理がまだ行われていなければなりません。

// just listen to statechange success event 
app.run(['$rootScope', function($rootScope){ 
    $rootScope.$on('$stateChangeSuccess', 
     function(event, toState, toParams, fromState) { 
     // if fromState.name is empty, its refresh || first landing 
     var history = $window.localStorage.getItem('history'); 
     var back = false; 
     if (history !== null) { 
      history = JSON.parse(history); 
      if (toState.name === history.from && fromState.name === history.to) { 
       back = true; 
      } 
     } 
     $window.localStorage.setItem('history', JSON.stringify({ 
      to: toState.name, 
      from: fromState.name, 
      isBack: back 
     })); 
    }); 
}); 

私は永続的なストレージ技術を使用していました。リフレッシュ条件も処理する必要があります。

関連する問題