UIルータは、状態変更が成功した後にアドレスバーのURLを更新できません

StackOverflow https://stackoverflow.com//questions/25003155

質問

私は小さな角度のアプリを構築しています、そして、私は現在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

再生手順:

  1. http://run.plnkr.co/plunks/ ZQMIYNU6ABEANDAM5NX1 /#/航空機/ 1 /チェックリスト
  2. 最初のリンクをクリックします。ビューが正しい状態を表示するために更新が更新されることに注意してくださいが、URLは/#/aircraft/1/checklistsに残ります。
  3. 他の手段でこの状態に戻ることは、完全にURLを更新することです。たとえば(上記の手順1と2を想定していると仮定して):

    1. 下部までスクロールして、Next Phaseリンクをクリックします。状態が変化し、URLの更新が更新されます。
    2. この新しいビューを下にスクロールして、Previous Phaseをクリックします。前の状態がリロードし、今回は正しく更新されたURLです。
    3. UIルータを誤って使用するか、この動作を引き起こすために誤って何か他のものをしていますか?

役に立ちましたか?

解決

check 更新版

あなたの状態'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を削除するだけです。 ...を参照してください) ...それをチェックこちら

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top