Переопределить кнопку возврата оборудования Android, заставить его выйти на одной странице и вернуться на следующих страницах

Я использую следующий контроллер, чтобы в dashboardКнопка возврата на страницу Android выходит из приложения, но на остальных страницах она возвращается. Так как раньше 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');
    }

  });

1 ответ

Решение

Сделайте это в вашем контроллере приборной панели

$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 с другого контроллера.

Другие вопросы по тегам