私はui-routerとAngular 1.4.7を使用しています。文脈については、私が試したことはすべて、前方から(経路から離れた場所を含めて)または経路内を後方にナビゲートするときに機能しますが、の異なるルートに戻るときには機能しません。ブラウザの履歴をナビゲートするときにブラウザが角経路にぶつからないようにする方法
私が立ち往生しようとしているコントローラの中で私は$ location.search()を使って自分のルートパラメータを更新し、$ locationChangeSuccessを使ってその変更後の関数を起動しています。現在、私は別のルートに戻ろうとすると、ルートに固執してしまいます。私は$ locationChangeStartと$ locationChangeSuccessを使ってルートを検出しようとしました(newUrlとoldUrlパラメータをスライスして)私は戻ってみようとしていますが、常に現在のルートとして表示されます(ただし、フォワードをナビゲートする)。
更新:コード
// routeIGetStuckOn.js excerpt
$stateProvider
.state('routeIGetStuckOn', {
url: '/routeIGetStuckOn?optionalParams',
reloadOnSearch: false,
templateUrl: 'app/routes/routeIGetStuckOn/routeIGetStuckOn.html',
controller: 'routeIGetStuckOnCtrl',
controllerAs: 'vm'
});
///////////////////////////////////////////////////////////////////////
// routeIGetStuckOn.controller.js excerpt
// When params in URL is updated, fire a function
$scope.$on('$locationChangeSuccess', function() {
loadNewData();
});
//Use $location.search in various different functions with different types of new data
$location.search('optionalParams', newData);
アップデートの一部:表示URLの問題
私は他の誰がで終わる場合には、私は答えとして提出する解決策を見つけましたこの状況。バックステップ2のwebsite.com/routeIGetStuckOn
にあるボタンをブラウザを使用して戻ったが結局するwebsite.com/routeIGetStuckOn?optionalParams=data
website.com/routeIGetStuckOn
- を
website.com/randomRoute
- ゴーでスタート:これは私が防止していますものです
website.com/routeIGetStuckOn?optionalParams=
。この時点で、ステップ1
あなたのルートとURLの例を挙げてもらえますか?コードを使用していますか?あなたが 'stateChangeSuccess'を使用していない理由は何ですか? – tyler
'$ stateChangeSuccess'は、履歴を通って別のルート(またはルート上をクリックするだけ)に進むと起動します。私が何をしているのかを明らかにするために、関連するコードを抜き出すことができるかどうかがわかります。しかし、たくさんのコードがあります:/ – bananabanana
正しく使用している場合は、 '$ stateChangeSuccess'が戻るボタンを使って起動します。私はいつもそれを使用しています... – tyler