2016-12-06 5 views
1

Während des Übergangs würde ich gern in der Lage sein, Werte zu ändern. In der Dokumentation habe ich eine Methode zum Zugriff auf Zielzustände params using params('to') method gefunden. In meinem Code sieht es aus wie dieseWie ändert man den Parameterwert während des Übergangs?

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

Meine state1 Definition sieht wie folgt aus

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

Allerdings, wenn ich Übergang durchzuführen, mit dem Code oben aufgeführten, mein success Parameter hat immer Standardwert (die false ist).

Frage ist - ist es möglich, Werte von Parametern während des Übergangs zu ändern?

Hintergrund: Ich habe zwei Tasten, die den Übergang von state3 zu state1 ermöglicht. Eine, die ich von meinem $scope steuern kann, aber die andere ist Breadcrumb-Link außerhalb von $scope. Ich dachte mir, ich könnte diesen $transitions Haken verwenden, um einige Bedingungen zu überprüfen und success auf den entsprechenden Wert zu setzen.

Ich bin über die Antwort suggesting performing whole new $state.go mit neuen Params gestolpert, aber ich finde es ein bisschen chaotisch und hacky. Ich habe das Gefühl, dass es auf einfachere und sauberere Weise erreicht werden kann.

Antwort

0

Ich habe es nicht geschaffen, diese Werte bei bestimmtem Übergang zu ändern, aber wenn ich onStart-onSuccess änderte, war ich einfach in der Lage ganz neuen Übergang mit meinem neuen Parameter

$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 }); 
}); 

Wechseln zu onSuccess verhindern unendlichem Übergang zu machen Schleife, die passierte, als ich neue Transition in onStart Ereignis anrief.

Verwandte Themen