UIルータは、状態変更が成功した後にアドレスバーのURLを更新できません
-
20-12-2019 - |
質問
私は小さな角度のアプリを構築しています、そして、私は現在UIルーターを使用しています。
UIルーターのバグのようにひどく見える問題を打ちましたが、このライブラリに精通しているのではないので確かにできません。ユーザーが特定のリンクをクリックすると、正しいビューの状態は期待どおりにロードされますが、アドレスバーのURLは更新されません。
UI-Routerのui-sref
ディレクティブを使用して、状態のURLを自動的に生成します。たとえば、チェックリストリストビューでは、次のコードを使用します。
<a ui-sref="checklist-phase({ aircraftId: checklist.aircraft, checklistId: checklist.id, phaseSlug: checklist.phases[0].slug })" ng-bind="checklist.name"></a>
.
私は私のアプリを切り取ってプランカーにしたので、問題は他の人によって再現可能です。このビデオでも問題が発生する可能性があります。> https://www.youtube.com/watch?v= ew9cfe6lfcw
再生手順:
- http://run.plnkr.co/plunks/ ZQMIYNU6ABEANDAM5NX1 /#/航空機/ 1 /チェックリスト
- 最初のリンクをクリックします。ビューが正しい状態を表示するために更新が更新されることに注意してくださいが、URLは
/#/aircraft/1/checklists
に残ります。 - 下部までスクロールして、
Next Phase
リンクをクリックします。状態が変化し、URLの更新が更新されます。 - この新しいビューを下にスクロールして、
Previous Phase
をクリックします。前の状態がリロードし、今回は正しく更新されたURLです。
他の手段でこの状態に戻ることは、完全にURLを更新することです。たとえば(上記の手順1と2を想定していると仮定して):
UIルータを誤って使用するか、この動作を引き起こすために誤って何か他のものをしていますか?
解決
あなたの状態'check-lists'
には、UI-SREFを'checklist-phase'
<a ui-sref="checklist-phase({ aircraftId: ...
.
と'checklist-phase'
は、'checklist-detail'
.state('checklist-phase', {
parent: 'checklist-detail',
.
と状態'checklist-detail'
には、$ state.go
.state('checklist-detail', {
controller: 'ChecklistDetailCtrl',
...
.controller('ChecklistDetailCtrl', function ($scope....
{
$state.go('checklist-phase', {
phaseSlug: checklistData.phases[0].slug
}, {
location: 'replace'
});
.
それをしない... $state.go
を削除するだけです。 ...を参照してください) ...それをチェックこちら
所属していません StackOverflow