
[code]

    $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
    
      // 遷移を止める
      event.preventDefault();
    
     // $resouce処理
     ,success(function{
        $state.go('state');
     })
     ,error(function(){something})
    
[/code]

}

ルーティングはui-routerを使用しています。  
上記の処理をしてページ遷移を実現させていますが、  
ブラウザの戻るを押下した時、1つ前の画面と表示している画面をループするように  
なってしまっています。

同期処理にするか、ブラウザでの戻る、進むを検知するかすれば  
対応できると思うのですが、どのように実装すればいいでしょう？


CC BY-SA 3.0
2015-11-21T12:10:53.357
19126
2016-09-11T18:44:11.670
13355
question
angularjs ui-router
angular ui-routerを使用した時のブラウザバック問題


今の状態ですと戻って無効化した後に進む方向の履歴に追加してそちらへ遷移しているので、戻ってもまた同じことが繰り返されてしまいループになってしまいます。

[code]

    $state.go('state', {}, {location: 'replace'});
    
[/code]

$state.goのオプションのlocationプロパティを"replace"という文字にすれば履歴が置き換わってくれます。


CC BY-SA 3.0
2016-02-10T17:06:02.897
21954
2016-02-10T17:06:02.897
14222
19126
answer