2015-09-26 6 views
10

に戻って行くのアプリを閉じますが、私はボタンを、デバイスをバッククリックした場合、それはむしろアンドロイドの前のページに戻って行くよりも、アプリを閉じます。デバイスをバックボタンをクリックする代わりに、それは目的のページを開き、任意の<code>ion-item</code>をクリックすると、前のページ

これは私のイオン性のサイドメニューです:ここで

<ion-side-menus enable-menu-with-back-views="false"> 
    <ion-side-menu-content> 
    <ion-nav-bar class="bar-positive"> 
     <ion-nav-back-button></ion-nav-back-button> 
     <ion-nav-buttons side="left"> 
     <button class="button button-icon icon ion-android-menu" menu-toggle="left"> 
     </button> 
     </ion-nav-buttons> 
    </ion-nav-bar> 
    <ion-nav-view name="menuContent"></ion-nav-view> 
    </ion-side-menu-content> 

    <ion-side-menu side="left"> 
    <ion-header-bar class="bar-positive"> 
     <h1 class="title"></h1> 
    </ion-header-bar> 
    <ion-content> 
     <ion-list> 
     <ion-item menu-close ng-click="login()"> 
      Login 
     </ion-item> 
     <ion-item menu-close ui-sref="app.search"> 
      Search 
     </ion-item> 
     <ion-item menu-close href="#/app/browse"> 
      Browse 
     </ion-item> 
     <ion-item menu-close href="#/app/playlists"> 
      Playlists 
     </ion-item> 
     </ion-list> 
    </ion-content> 
    </ion-side-menu> 
</ion-side-menus> 

app.jsです:

.state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl' 
    }) 

    .state('app.search', { 
    url: '/search', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/search/default.html' 
     } 
    } 
    }) 
    .state('app.search-form', { 
    url: '/search-form', 
    views: { 
     'menuContent': { 
     templateUrl: 'templates/search/search-form.html' 
     } 
    } 
    }) 

O私が見つけたねっソリューション:

$ionicHistory.nextViewOptions({   
    disableBack: true, 
    historyRoot: true 
});  

ボタンをクリックして次のページに行くときに、この意志は戻るボタンを無効にします。

答えて

22

戻るボタンのデフォルトの動作は次のとおりです。 履歴に戻る - 履歴スタックが空の場合は、 - >アプリケーションを終了します。

ハードウェアの戻るボタンをタップすると、現在の状態を確認する必要があります。

次のコード(モジュールの実行機能に配置)を使用すると、デフォルトの動作を上書きできます。たとえば、次のようなアプリ出口無効にすることができます。

$ionicPlatform.registerBackButtonAction(function (event) { 
    if($state.current.name=="app.home"){ 
    navigator.app.exitApp(); //<-- remove this line to disable the exit 
    } 
    else { 
    navigator.app.backHistory(); 
    } 
}, 100); 

$ionicPlatformのマニュアルを参照してください。

+0

がどのように私は '$のstate.current.name == "app.home" 一度ページをバックアップするためにナビゲートすることができますが、'本当ですか? – manish

+0

$ IonicHistoryを見てください。 http://ionicframework.com/docs/api/service/$ionicHistory/元の質問を解決したら、この回答を受け入れてください。 –

+0

@AndreKreienbringなぜ100ミリ秒の遅延を追加しましたか? –

6

サイドメニューの[menu-close]属性は、履歴を消去します。 menu-toggle="left"に置き換えることで試してみることができます。それはまだサイドバーを閉めるが、歴史を維持する。

以下のようなHWバックキーの動作をオーバーライドしました。 これを押すと、アプリを終了する前に開始ビューに移動します。サイドメニューではまだmenu-closeという属性を使用しています。また、私はwindow.localStorage["start_view"]に私のアプリで変更することができるので、開始URLを格納することに注意してください。この問題を解決するために、他の誰かを助けたり刺激したりしたいと考えています。

$ionicPlatform.registerBackButtonAction(function(event) { 
    if ($ionicHistory.backView() == null && $ionicHistory.currentView().url != window.localStorage["start_view"]) { 
     // Goto start view 
     console.log("-> Going to start view instead of exiting"); 
     $ionicHistory.currentView($ionicHistory.backView()); // to clean history. 
     $rootScope.$apply(function() { 
     $location.path(window.localStorage["start_view"]); 
     }); 
    } else if ($ionicHistory.backView() == null && $ionicHistory.currentView().url == window.localStorage["start_view"]) { 
     console.log("-> Exiting app"); 
     navigator.app.exitApp(); 
    } else { 
     // Normal back 
     console.log("-> Going back"); 
     $ionicHistory.goBack(); 
    } 
    }, 100); 
+0

あなたのためのThanxソリューションは、私たちがこのIonicキャッシュとナビゲーション履歴バグ混乱から脱出するのを助けました。 – mably

+0

menu-closeをmenu-toggleに置き換えることができました!ありがとうございました! –

0

一つの解決策は次のようになります。

$ionicHistory.nextViewOptions({   
    disableBack: true, 
    historyRoot: true 
});  
0

これは、それ以外の場合は動作しませんでした、広がるのイベントを防ぐことができます。で

コード:https://stackoverflow.com/users/5378702/andre-kreienbring

$ionicPlatform.registerBackButtonAction(function (event) { 
    if(condition){ 
    navigator.app.exitApp(); //<-- remove this line to disable the exit 
    } 
    else { 
    navigator.app.backHistory(); 
    } 
    throw "PreventBackButton"; 
}, 100); 
関連する問題