7

次のコントローラーを使用して、dashboardページ内のアンドロイドの戻るボタンでアプリを終了しますが、残りのページでは元に戻ります。ページの前dashboardにユーザーに一度だけ提示するチュートリアルを持っていたので、Androidの戻るボタンをオーバーライドしてdashboard、押された場合に終了するようにし、このコードでうまく動作するようにする必要がありました:

angular

  .module('az-app')
  .controller('DashboardController', function ($scope, $state, $ionicPlatform) {

    /**
     * While user on dashboard.html we don't want Android back button to return
     * to tutorial views so we override it so that in case that back button is pressed
     * to exit app which is in accordance with android lifecycle.
     *
     */
    $ionicPlatform.registerBackButtonAction(function () {
       if($state.is('/dashboard') || $state.is('dashboard')){
        navigator.app.exitApp();

       }
    }, 100);


  });

問題は、次のビューに移動しても終了ボタンとして機能することですが、ダッシュボードではない他のビューの戻るボタンにしたいので、次のコントローラーでこれを試しました:

angular

  .module('az-app')
  .controller('DirMedicoController', function ($scope, $state, $ionicPlatform) {

    $ionicPlatform.registerBackButtonAction(function () {

      navigator.app.backHistory();

    }, 100);

  });

そのため、機能が返されますが、過去のコントローラーから戻ってきたときに再度dashboard押すと、その機能がオーバーライドされ、終了する代わりに元に戻ります。

アップデート

以下のmudasser ajazによる回答のおかげで、最終的に機能させることができました。回答は次のとおりです。

angular

  .module('az-app')
  .controller('DashboardController', function ($scope, $state, $ionicPlatform, $location, $ionicHistory) {

    /**
     * While user on dashboard.html we don't want Android back button to return
     * to tutorial views so we override it so that in case that back button is pressed
     * to exit app which is in accordance with android lifecycle.
     *
     * Else if not on dashboard just work as normal back button
     *
     */
    $ionicPlatform.registerBackButtonAction(function() {
      if ($location.path() === "/dashboard") {
        navigator.app.exitApp();
      }
      else {
        $ionicHistory.goBack();
      }
    }, 100);


    $scope.backToPolicy = function () {
      $state.go('intro');
    }

    $scope.showDirMedico = function () {
      $state.go('dirmedico');
    }

  });
4

1 に答える 1

20

ダッシュボードコントローラーでこれを行います

$ionicPlatform.registerBackButtonAction(function() {
//var path = $location.path()
  if ($location.path() === "/dashboard" || $location.path() === "dashboard") {
    navigator.app.exitApp();
  }
  else {
    $ionicHistory.goBack();
    //navigator.app.goBack();
  }
}, 100);

$location と $ionicHistory を依存関係として追加します

.controller('DashboardController', function ($scope, $state, $ionicPlatform, $location, $ionicHistory) {

registerBackButtonAction他のコントローラから取り外します。

于 2015-09-01T21:49:01.807 に答える