2017-02-13 2 views
1

У меня проблема с кнопкой «Назад», запущенной более одного раза.

В настоящее время я нахожусь в состоянии «сообщений» $, и если я нажму кнопку «Назад», следующий код будет работать как обычно.

var messageIsClosed = true; 

$ionicPlatform.onHardwareBackButton(function(event){ 
    event.stopPropagation(); 
    handleBackButton(); 
}) 

var handleBackButton = function(){ 
    if(messageIsClosed){ 
    $state.go("dash"); 
    } else { 
    messageIsClosed = false; 
    } 
} 

однако, если я пойду в другой $ состоянии (скажем, «тире»), а затем вернуться в «сообщения», нажав на кнопку возврата будет сделать выше код, выполняемый в два раза. Тогда, если я вернусь в «сообщения» снова работает в 3 раза, а затем 4. Для каждого времени я посещаю «сообщения» Вид/контроллер код кнопки обратно будет работать дополнительное время

Я понятия не имею, почему

ответ

0

onHardwareBackButton будет работать несколько раз, и это нормально в вашем случае. Это происходит потому, что вы регистрируете событие каждый раз, когда вы посещаете состояние сообщений.

Чтобы избежать многократной регистрации события, вы можете использовать offHardwareBackButton() и удалить регистрацию при удалении от текущего состояния.

Пример кода:

Это обратный вызов

var hardwareBackButtonHandler = function() { 
    // add you back button logic here 
    console.log('Hardware back button pressed'); 
} 

Регистрация обратно событие кнопки так:

$ionicPlatform.onHardwareBackButton(hardwareBackButtonHandler); 

Тогда при переходе от текущего состояния вы можете отменить регистрацию например:

$ionicPlatform.offHardwareBackButton(hardwareBackButtonHandler); 
Смежные вопросы