/ / AngularJS ui-router - javascript, angularjs, angular-ui-router, angular-ui

AngularJS ui-router - javascript, angularjs, angular-ui-router, angular-ui

Rozszerzenie maszyny stanów AngularJS ui-router deklaruje dyrektywę, która konwertuje trasy za pomocą atrybutu ui-sref w href ścieżki i wypełnia go żądanymi zmiennymi. Czy istnieje sposób na dostęp do tego samego parsera trasy z zakresu?

Aktualizacja

Poszukuję wbudowanego jeszcze nieudokumentowanego resolvera (lub sposobu na uzyskanie tego samego rezultatu), który dałby ścieżkę do nazwanego argumentu. W duchu nazwanej trasy:

<a ui-sref="management.person({personId: 1})" />

Która pasuje do trasy

$stateProvider.state("management", {
url: "/absolute/part"
});

$stateProvider.state("management.person", {
url: "/relative/part/:personId"
});

i wyjścia #/absolute/part/relative/part/1 - i na wypadek, gdy przejdę do używania ! fragment, wszystkie adresy URL są konwertowane. Sama dyrektywa już to robi, ale jej argumentów nie można budować dynamicznie.

Odpowiedzi:

4 dla odpowiedzi № 1

Interfejs ui-router zapewnia kilka usług w interfejsie API, których można użyć do wykonania tych czynności. Wypróbuj jeden z tych przykładów:

Od http://angular-ui.github.io/ui-router/site/#/api/ui.router.state. $ state

var url = $state.href("about-person", {
person: "bob"
});

Od http://angular-ui.github.io/ui-router/site/#/api/ui.router.router. $ urlRouter

var url = $urlRouter.href(new UrlMatcher("/about/:person"), {
person: "bob"
});

Te dwa wzorce konwertują nazwy stanów i szablony adresów URL na w pełni sformatowane adresy URL. Dostępne są również dodatkowe wywołania API.


5 dla odpowiedzi nr 2

W marcu 2015 roku dostałem "UrlMatcher is not defined" za odpowiedź Chada Robinsona. Ale udało mi się wstrzyknąć $urlMatcherFactory i zamień urlParams na adres URL szablonu interfejsu użytkownika routera.

$urlMatcherFactory.compile("/about/:person").format({
person: "bob"
})