$ ionicPlatform onHardwareBackButton运行多次

时间:2017-02-13 11:27:25

标签: javascript angularjs cordova ionic-framework

我遇到一个问题,即后退按钮不止一次运行。

目前我处于“消息”$状态,如果按下后退按钮,则以下代码正常工作。

var messageIsClosed = true;

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

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

但是,如果我转到另一个$状态(比如说“破折号”)然后返回“消息”,按下后退按钮将使上面的代码运行两次。然后,如果我再次回到“消息”,它会运行3次,然后是4.每次我访问“消息”视图/控制器时,后退按钮代码将运行一个额外的时间

我不知道为什么

1 个答案:

答案 0 :(得分:0)

onHardwareBackButton将多次运行,这在您的情况下是正常的。这是因为您每次访问消息状态时都要注册该事件。

为避免多次注册事件,您可以使用offHardwareBackButton()并在离开当前状态时取消注册事件。

示例代码:

这是回调

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

注册后退按钮事件:

$ionicPlatform.onHardwareBackButton(hardwareBackButtonHandler);

然后当离开当前状态时,您可以取消注册:

$ionicPlatform.offHardwareBackButton(hardwareBackButtonHandler);