2016-10-25 3 views
6

Ich benutze Ui-Router 1.0.0.beta.3. Wie kann ich während eines Übergangs die Parameter des nächsten Zustands routen?Ui-Router: So erhalten Sie die nächsten Zustandsparameter im Übergang

index.run.js

$transitions.onStart({ to: '**' }, verifyAuth); 

function verifyAuth(trans) { 
    let nextState = trans.$to(); 
    if (Auth.verify(nextState.authGroup) === -1) {  
    return $state.go('login', { nextState: nextState.name, nextParams: nextState.params}); // this doesn't work 
    } 
} 

Ich möchte, dass sie speichern, so kann ich den Benutzer den Zustand + Zustand params umleiten er zugreifen wollte, nachdem die Authentifizierung erfolgreich ist.

login.component.js

let nextState = this.$stateParams.nextState; 
let nextParams = this.$stateParams.nextParams; 
$state.go(nextState, nextParams); 

Antwort

9

die Antwort auf Ihre Frage ist Transition.params()

function verifyAuth(trans) { 
    let nextState = trans.to(); 
    let nextParams = trans.params(); 
    if (Auth.verify(nextState.authGroup) === -1) {  
    return $state.go('login', { nextState: nextState.name, nextParams: nextParams}); 
    } 
} 

Allerdings empfehle ich das Studium, wie die ui-router 1.0 sample app führt Authentifizierungsprüfungen und Login umleitet:

Dieser Haken leitet den Übergang unauthenticated zum Login-Zustand durch ein $state.target('login')

https://github.com/ui-router/sample-app-ng1/blob/master/app/global/requiresAuth.hook.js#L15-L24

im Anmeldezustand zurückkehrt, der „Zustand zurückzukehren, nachdem Login“ bestimmt wird. Es überprüft das Ziel des ursprünglichen Übergangs unter Verwendung Transition.redirectedFrom().

https://github.com/ui-router/sample-app-ng1/blob/master/app/main/app.states.js#L44-L83

+0

Gute Antwort, aber als Ergänzung, wenn Sie mit einem Legacy-Projekt stecken, die nicht so viel Refactoring in einem Rutsch verarbeiten können, auf 1.0.5 fand ich konnte ich 'trans verwenden. $ to() 'und' trans. $ from() 'als Ersetzungsfehler. Hoffentlich kann ich es irgendwann noch einmal umgestalten, um mit der Strategie der Beispiel-App zu gehen. – toxaq

Verwandte Themen