2016-04-26 2 views
0

Я хочу получить доступ к имени родительского состояния при обнаружении изменения состояния. Мой код до сих пор:

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

[parentState.childState] Возвращает. Одна из возможностей - использовать регулярное выражение для замены каждого символа, который появляется после «.». но я предполагаю, что в ui-router должна быть функция для получения имени родительского состояния.

Что мне нужно добавить? получить [parentState]?

Пример: Пользователь отправлен из штата login в состояние pets.dogs. pets является абстрактным родительским состоянием, dogs является его потомком. fromState.name вернет login, но я хочу pets.

EDIT: Да, обходной путь toState.name.split(".")[0] возможен, но работает только в контролируемых условиях.

+0

'fromState.name' будет работать. – Rakeschand

+0

Мне не нужно состояние, в котором пользователь приходит, но состояние, на которое toState является дочерним. Например, пользователь приходит от 'login' к 'pets.dogs'. «Домашние животные» - это абстрактное родительское состояние. 'fromState.name' вернет' login', но я хочу 'pets'. – trahloff

+0

Если имена являются относительными, вы можете манипулировать строкой имени и узнать. Я не знаю, есть ли какая-либо функция или нет. – Rakeschand

ответ

-1

Думаю, что вы можете сделать toState.parent.name.

+0

Это не работает, нет ничего похожего на родителя в toState –

+0

@ojuskulkarni Это зависит от того, как вы настраиваете свои состояния. В моем приложении я использовал [этот метод] (https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views#parent-property-using-state-name-string) для установки родительских состояний. – Muijs

Смежные вопросы