Używając angular-ui-router, jak mogę użyć innej metody na $ stateProvider lub jak w ogóle mogę z niej skorzystać?
95
Używając angular-ui-router, jak mogę użyć innej metody na $ stateProvider lub jak w ogóle mogę z niej skorzystać?
$stateProvider.otherwise
, więc to mi pomoże)Odpowiedzi:
Nie możesz używać tylko
$stateProvider
.Musisz wstrzyknąć
$urlRouterProvider
i utworzyć kod podobny do:/otherwise
Url musi być zdefiniowana w stanie, jak zwykle:Zobacz ten link, gdzie ksperling wyjaśnia
źródło
$stateProvider
. To mniej pracy, jeśli chcesz po prostu wyświetlić szablon, ale nie przekierować. Wolę odpowiedź @ juan-hernandez.otherwise
(w tym przypadku'/otherwise'
) musi być zgodna z nazwą stanu (pierwszy parametr do.state
) lub wartością dlaurl
opcji?Możesz
$stateProvider
użyć składni catch all ("*path"
). Musisz tylko dodać konfigurację stanu na dole listy, taką jak ta:Wszystkie opcje są wyjaśnione na https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters .
Zaletą tej opcji, w przeciwieństwie do niej
$urlRouterProvider.otherwise(...)
, jest to, że nie jesteś zmuszony do zmiany lokalizacji.źródło
you're not forced to a location change
?/this/does/not/exist
, adres URL pozostanie taki na pasku adresu. Inne rozwiązanie zaprowadzi cię do/otherwise
Możesz również ręcznie wstrzyknąć $ state do funkcji w przeciwnym razie, którą możesz następnie przejść do stanu bez adresu URL. Ma to tę zaletę, że przeglądarka nie zmienia paska adresu, co jest pomocne przy powrocie do poprzedniej strony.
źródło
Ok, ten głupi moment, kiedy zdajesz sobie sprawę, że na zadane pytanie znajduje się już odpowiedź w pierwszych wierszach przykładowego kodu! Wystarczy spojrzeć na przykładowy kod.
Spójrz tutaj.
źródło
Chcę tylko dodać świetne odpowiedzi, które już zostały podane. W najnowszej wersji
@uirouter/angularjs
klasa została oznaczonaUrlRouterProvider
jako przestarzała. Teraz zalecają używanieUrlService
zamiast tego. Możesz osiągnąć ten sam wynik, wprowadzając następującą modyfikację:Dodatkowe metody: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
źródło
W Zaakceptowanych odpowiedź referencje
angular-route
pyta oui-router
. Zaakceptowana odpowiedź używa „monolitycznego”$routeProvider
, co wymagangRoute
modułu (natomiastui-router
wymaga rozszerzeniaui.router
modułu)Najwyżej oceniane odpowiedź wykorzystuje
$stateProvider
zamiast, i mówi coś takiego.state("otherwise", { url : '/otherwise'... })
, ale nie mogę znaleźć żadnej wzmianki o „inaczej” w dokumentacji Łączy . Jednak widzę, że$stateProvider
jest to wspomniane w tej odpowiedzi, gdzie mówi:W tym miejscu moja odpowiedź może ci pomóc. U mnie wystarczyło użyć
$urlRouterProvider
właśnie w ten sposób:Moja sugestia jest zgodna z
ui-router
dokumentacją ( ta konkretna wersja ), w której zawiera ona podobne użycie.when(...)
metoda (pierwsze wywołanie funkcji):źródło