2016-12-06 6 views
1

移行中にparamsの値を変更したいと考えています。ドキュメントでは、ターゲット状態のパラメータusing params('to') methodにアクセスする方法が見つかりました。私は、移行を実行すると、この移行中にparams値を変更するにはどうすればよいですか?

$transitions.onStart({ from: 'state3', to: 'state1' }, function ($transition$) { 
    var params = $transition$.params('to'); 
    if(someCondition){ 
     params.success = true; 
    } 
    $transition$.params['to'] = params; 
}); 

マイstate1定義は上記のコードで、しかし、この

$stateProvider 
    .state('state1', { 
     url: '/', 
     params: { 
      success: false, 
     }, 
     ... 

のように見えるように私のコードでは、それは見えます、私のsuccessパラメータは常にfalseあるデフォルト値を(持っています)。

質問:移行中にパラメータの値を変更することは可能ですか?

背景:2つのボタンがあり、state3からstate1への移行が可能です。 1つは私の$scopeから制御できますが、もう1つは$scopeの外側にあるブレッドクラムリンクです。私はこの$transitionsフックを使用していくつかの条件を確認し、successを適切な値に設定することができたと考えました。

私は新しいパラメータで答えsuggesting performing whole new $state.goを見つけましたが、ちょっと面倒でハッキリです。私はそれがよりシンプルでクリーンな方法で達成できるという気持ちを持っています。

答えて

0

私は特定の遷移時にこれらの値を変更することが出来なかったが、私はonSuccessonStartを変更したときに、私は単に私の新しいパラメータが

$transitions.onSuccess({ from: 'state3', to: 'state1' }, function ($transition$) { 
    var fromParams = $transition$.params('from'); 
    if (someCondition) { 
     return $state.transitionTo('state1'); 
    } 
    return $state.transitionTo('state1', { success: true }, { notify: false }); 
}); 

onSuccessに変更すると、まったく新しい遷移が無限の移行を防ぐことができましたループは、私がonStartイベントで新しい移行を呼び出していたときに起きていました。

関連する問題