2016-04-26 7 views
0

Ich möchte auf den Namen des übergeordneten Status zugreifen, wenn eine Zustandsänderung erkannt wird. Mein Code so weit:

app.run(function($rootScope, $state, authProvider) { 
    $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams) { 
     console.log(toState.name); 
    }); 
}); 

Returns [parentState.childState]. Eine Möglichkeit wäre, Regex zu verwenden, um jedes Symbol zu ersetzen, das nach dem "." aber ich denke, dass es eine Funktion in ui-router geben muss, um den Namen des Elternstatus zu erhalten.

Was müsste ich hinzufügen? zu bekommen [parentState]?

Beispiel: Der Benutzer kommt aus dem Zustand login in den Zustand pets.dogs. pets ist ein abstrakter Elternstatus, dogs ist ein Kind davon. fromState.name würde login zurückgeben, aber ich möchte pets.

EDIT: Ja, die Problemumgehung toState.name.split(".")[0] ist möglich, funktioniert aber nur unter kontrollierten Bedingungen.

+0

'fromState.name' funktioniert. – Rakeschand

+0

Ich möchte nicht den Status, aus dem der Benutzer stammt, sondern den Status, aus dem der toState ein Kind ist. Zum Beispiel kommt der Benutzer von "Login" zu "pets.dogs". "Haustiere" ist ein abstrakter Elternteil. 'fromState.name' würde' login' zurückgeben, aber ich möchte 'pets'. – trahloff

+0

Wenn Namen relativ sind, können Sie den Namen string manipulieren und herausfinden. Ich weiß nicht, ob irgendeine Funktion verfügbar ist oder nicht. – Rakeschand

Antwort

-1

Ich denke, Sie können toState.parent.name tun.

+0

Dies funktioniert nicht, es gibt nichts wie Eltern in toState –

+0

@ojuskulkarni Es hängt davon ab, wie Sie Ihre Staaten konfigurieren. In meiner Anwendung habe ich [diese Methode] verwendet (https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views#parent-property-using-state-name-string) um die Elternstaaten festzulegen. – Muijs

Verwandte Themen