2015-12-10 14 views
6

Ionic Frameworkを使用してAndroidアプリを開発しています。

この場合、私は3つのビューview1, view2 and view3を持っています。 view3から戻っview2に移動するとき

ナビゲーションview1 -> view2 -> view3

ようになり、私はいくつかの操作を実行するためにview2のstateParam param1値を変更する必要があります。コードの下には、あなたは私場合は、バックview2に移動した後

$ionicPlatform.registerBackButtonAction(function() { 

     if ($state.current.name == "view3") { 
      $ionicHistory.backView().stateParams = {param1:true}; 
      $ionicHistory.goBack(); // moves to view2 
     } else { 
      $ionicHistory.goBack(); 
     } 

}, 100); 

戻るボタンのAndroidデバイスの動作を無効にするためのコードです続きview3

に戻るボタンをクリックしたときに、私はview2のstateParam値を変更していますことを示しています今すぐ戻るボタンをクリックすると、view3に移動し、view1に移動しません。今度はview3view2だけを表示することができます。ボタンをクリックすると、まったくではなくview1に移動します。

view2からview1に戻るボタンを戻す方法view2のstateParamの値を変更した後でも、

+0

$ state.go( 'view2'、{param1:true}); – Emre

+0

Emre、私はそれを試した。しかし、運がない。同じ結果。 – Selva

+0

これは一種のハードコードになりますが、スイッチケースを作成し、すべてのケースでコードを書くことができます – Emre

答えて

2

私はついにこの問題の解決策を見つけました。残念ながら、それはちょっとハックなのでちょっと醜いです。

ヒントは、stateParamsだけでなくstateIdも更新する必要があります。

再利用可能な答えは下記参照してください:あなたの特定のケースで

var params = {param1:true}; 
var backView = $ionicHistory.backView(); 

var stateId = backView.stateName; 
for (var key in params) { 
    if (params[key] && params[key] !== "") { 
     stateId += "_" + key + "=" + params[key]; 
    } 
} 

backView.stateParams = params; 
backView.stateId = stateId; 
$ionicHistory.goBack(); 

を、それだけで次のようになります。

if ($state.current.name == "view3") { 
    var backView = $ionicHistory.backView(); 
    backView.stateParams = {param1:true}; 
    backView.stateId = backView.stateName + "_param1=true"; 
    $ionicHistory.goBack(); // moves to view2 
} else { 
    $ionicHistory.goBack(); 
} 
1

ので、私は同じ問題に会ったが、私のVIEW2がルートであります私は戻ってVIEW2にview3ときので、この私のコードがうまく実行されるとview3が

$ionicHistory.backView().stateParams = resultObject; 
    $ionicHistory.nextViewOptions({ disableBack: true });//this can 
    $ionicHistory.goBack(); 

消えバック作られた、背中を無効にし、FOあなたの目的地は、手動でview2.onenter()でバックビューを追加することができます

関連する問題