2017-02-13 7 views
1

複数回実行されている[戻る]ボタンに問題があります。

現在、私は "メッセージ" $状態にあります。私が戻るボタンを押すと、次のコードが正常に機能します。

var messageIsClosed = true; 

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

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

しかし、私は別の$状態になります(たとえば、「ダッシュ」)と2回上記のコードの実行を行います戻るボタンを押すと、「メッセージ」に戻ります。それから私が "メッセージ"に再び戻ったら、それは3回、次に4回になる。 "メッセージ"ビュー/コントローラを訪れるたびに、戻るボタンのコードは余分な時間を過ごす。

私は理由がわからない

答えて

0

onHardwareBackButtonは複数回実行されますが、これは通常の場合です。これは、メッセージ状態にアクセスするたびにイベントを登録するためです。

イベントの多重登録を避けるには、offHardwareBackButton()を使用し、現在の状態から離れるときにイベントの登録を解除することができます。

例のコードは:現在の状態から離れて移動するときにすることができ、非レジスタその後

$ionicPlatform.onHardwareBackButton(hardwareBackButtonHandler); 

これは、コールバック

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

登録するようなバックボタンのイベントですそのように:

$ionicPlatform.offHardwareBackButton(hardwareBackButtonHandler); 
関連する問題