2015-07-23 2 views
4

мне нужно переопределить функцию кнопки назад для обеих кнопок:Ионный: как переопределить функцию кнопки «Назад»?

  • значок назад в левом верхнем углу нав-бар
  • аппаратные средства кнопки (например, Android) назад

но только для одного конкретного вида, а не во всем мире. Как я могу это сделать?

+0

Кнопка назад на панели навигации не должен существовать, когда вы находитесь на домашний вид. поэтому мне не нужно было переопределять функцию назад на панели навигации. – Mulgard

ответ

2

Этот код для кнопки Android, в то время как кнопка на панели навигации является немного более простой:

кнопки Android:

$ionicPlatform.registerBackButtonAction(function (event) { 
    if($state.current.name=="home"){ 
    alert("button back"); 
    } 
}, 100); 

Ионные кнопка:

Вы можете изменить тему и посмотрите, как вы определили свои меню и свои взгляды?

+1

Полезно отметить, что этот метод возвращает функцию «_A», которая при вызове отменяет регистрацию этого backButtonAction._ ». Для получения дополнительной информации об отмене пользовательского поведения кнопки обратной связи см. Этот вопрос: [Ионное отмену отмены кнопки BACK] (http://stackoverflow.com/questions/32245181/ionic-cancel-back-button-override) –

+0

Это не работает на IOS! И работает только с аппаратными кнопками. – Azarus

4

Возможно, переопределить функциональность кнопки «Назад» для обеих кнопок с вашего контроллера. Вот код, который:

// run this function when either hard or soft back button is pressed 
var doCustomBack = function() { 
    console.log("custom BACK"); 
}; 

// override soft back 
// framework calls $rootScope.$ionicGoBack when soft back button is pressed 
var oldSoftBack = $rootScope.$ionicGoBack; 
$rootScope.$ionicGoBack = function() { 
    doCustomBack(); 
}; 
var deregisterSoftBack = function() { 
    $rootScope.$ionicGoBack = oldSoftBack; 
}; 

// override hard back 
// registerBackButtonAction() returns a function which can be used to deregister it 
var deregisterHardBack = $ionicPlatform.registerBackButtonAction(
    doCustomBack, 101 
); 

// cancel custom back behaviour 
$scope.$on('$destroy', function() { 
    deregisterHardBack(); 
    deregisterSoftBack(); 
}); 

Убедитесь в том, чтобы ввести $rootScope в контроллер.


Для получения более подробной информации и надлежащего объяснения, см моего полного ответа на соответствующий вопрос:

Смежные вопросы