2016-05-06 10 views
1

私のイオニアアプリケーションでは、特にChromeのionic serveでテストするときに、イオンタブでナビゲートしているときに奇妙な動作が見られます。ルートルート(http://localhost:8100/#)としてページを読み込むと、ナビゲーションと状態が正常に動作します。私はページの下部にある自分のタブ(iOSビュー)をクリックして、予想される動作を得ることができます。子URLからのイオニックおよび角度uiルータのナビゲーションの問題

代わりに、ネストされたビューのURLを読み込み、タブをクリックしてその親ビューに戻ると、入力した子ビューのみが表示されます。

例(イオンの毎晩ペンから借りた): http://codepen.io/ionic/pen/odqCz#/tab/facts2

#/タブ/ facts2ことなく、上記のcodepenを入力するとき、期待通りのナビゲーションが起こる - 私は「科学的事実」ボタンをクリックすることができ、ダウンナビゲート少数の子供たちは、その後、 'ホーム'アイコンをクリックし、ルートに戻る。

2番目のURLに入力すると、私が期待しているようにfacts2ページに移動します。ただし、[ホーム]アイコンをクリックすると、常にファクト2に戻ります。私はfacts2ページに「ホーム」ボタンを使用する場合

<ion-tab title="Home" icon="ion-home" href="#/tab/home"> 
    <ion-nav-view name="home-tab"></ion-nav-view> 
</ion-tab> 

興味深いことに、それは正しくホームに移動しないが、NAVのアイコンは機能しません。

<a class="button icon ion-home" href="#/tab/home"> Home</a> 

ui-router/stateの変更の仕組みが分からない、またはこれがバグですか?私の主な関心事は、このアプリケーションをコンパイルしてデプロイしたときに、ユーザーが子の状態の1つにプログラムを残してからもう一度開くと、ナビゲーションバーが壊れることです。

答えて

0

<ion-nav-view name="home-tab"></ion-nav-view>は、設定ファイルのstateprovider宣言にあるビューを読み込みます。セカンダリビューを最初に読み込むと、適切なナビゲーションヒストリが作成されず、メインタブビューに戻ることができなくなります。 name属性は、上のあなたが持っている同じ名前です:メインタブのビューコントローラに

$scope.$on('$ionicView.beforeEnter', function (event, viewData) { 
    $ionicHistory.clearCache(); 
}); 

を、それはビューキャッシュをクリアします:

views: { 
     'home-tab': { 
      templateUrl: "templates/home.html", 
      controller: 'HomeTabCtrl' 
     } 
     } 

あなたが二次ビューをロードしたいのであれば最初に追加正しいview/htmlに置き換えてください。

別の方法は、例えば、あなたはそれはあなたが作業している現在のビューに作用したい状態のコピーを使用することです:あなたの問題を解決しませんが、

$stateProvider 
    .state('tabs', { 
     url: "/tab", 
     abstract: true, 
     templateUrl: "templates/tabs.html" 
    }) 
    .state('tabs.home', { 
     url: "/home", 
     views: { 
     'home-tab': { 
      templateUrl: "templates/home.html", 
      controller: 'HomeTabCtrl' 
     } 
     } 
    }) 
    .state('tabs.facts', { 
     url: "/facts", 
     views: { 
     'home-tab': { 
      templateUrl: "templates/facts.html" 
     } 
     } 
    }) 
    .state('tabs.facts2', { 
     url: "/facts2", 
     views: { 
     'home-tab': { 
      templateUrl: "templates/facts2.html" 
     } 
     } 
    }) 
    .state('tabs.about', { 
     url: "/about", 
     views: { 
     'about-tab': { 
      templateUrl: "templates/about.html" 
     } 
     } 
    }) 
    .state('tabs.aboutFacts2', { 
     url: "/about/facts2", 
     views: { 
     'about-tab': { 
      templateUrl: "templates/facts2.html" 
     } 
     } 
    }) 

それはありませんそれも引き起こします。 Facts2は2つの異なるビューを置き換えており、2つの異なるコンテキストからアクセス可能であり、ナビゲーション履歴を緊密に保ちます。

関連する問題