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 № 1Interfejs 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"
})