Moje stany hierarchia (od góry do dołu):Angularny router UI, jak uzyskać listę przodków bieżącego stanu z kontrolera?
root
account
account.invoices
account.invoices.detail
Kiedy jestem w stanie account.invoices.detail
Chciałbym uzyskaj listę stanów przodków:
angular
.module('app')
.controller('InvoiceDetailCtrl', ['$scope', '$state', function ($scope, $state) {
var current = $state.current.name;
// Get ancestors from current state
// Tried $state.current.parent, $state.parent, $state.parent(current)
}]);
Angularny router UI pozwala uzyskać przejście do stanu macierzystego (tj. z widoku z data-ui-sref="^"
), więc powinno być możliwe osiągnięcie tego (śledzenie łańcucha przodków do root
).
Potrzebuję tego do zbudowania funkcjonalności podobnej do automatycznej bułki.
EDIT: skończyło się tym, że dzięki przyjętym odpowiedź:
var current = $scope.$state.$current,
parent = current.parent,
ancestors = [current.name];
while (typeof parent != 'undefined' && parent.name.length) {
ancestors.push(parent.name);
parent = parent.parent;
}
Jeśli zapytasz dlaczego czek na parent.name.length
jego ponieważ istnieje coś takiego jak „root” stanie w Kątowymi UI (CAN nie dostaniesz żadnej dokumentacji).
Tak jak powiedziałeś, możesz to zrobić, przesłuchując rodziców lub rodziców i samemu budując listę. AFAIK nie ma metody, która zwraca listę przodków dla określonego stanu. – Wawy
@Wawy Jak mogę zapytać rodzica o aktualny stan? Od wewnątrz kontrolera mam na myśli ... – gremo