質問: ``` $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { // 遷移を止める event.preventDefault(); // $resouce処理 ,success(function{ $state.go('state'); }) ,error(function(){something}) ``` } ルーティングはui-routerを使用しています。 上記の処理をしてページ遷移を実現させていますが、 ブラウザの戻るを押下した時、1つ前の画面と表示している画面をループするように なってしまっています。 同期処理にするか、ブラウザでの戻る、進むを検知するかすれば 対応できると思うのですが、どのように実装すればいいでしょう?
回答: 今の状態ですと戻って無効化した後に進む方向の履歴に追加してそちらへ遷移しているので、戻ってもまた同じことが繰り返されてしまいループになってしまいます。 ``` $state.go('state', {}, {location: 'replace'}); ``` $state.goのオプションのlocationプロパティを"replace"という文字にすれば履歴が置き換わってくれます。