Chcę wykonać przekierowanie, które powoduje ponowne załadowanie całej strony, aby pliki cookie z mojego serwera WWW były odświeżane podczas ładowania strony. window.location = "/#/Next"
i window.location.href = "/#/Next"
nie działają, wykonują trasę Angular, która nie trafia do serwera.
Jaki jest poprawny sposób wysyłania pełnego żądania serwera w kontrolerze Angular?
Odpowiedzi:
Dla
<a>
tagów :Musisz przykleić
target="_self"
swój<a>
tagIstnieją trzy przypadki, w których AngularJS przeładuje całą stronę:
Przykład:
<a href="https://stackoverflow.com/ext/link?a=b" target="_self">link</a>
Przykład:
<a href="http://angularjs.org/">link</a>
Przykład:
<a href="https://stackoverflow.com/not-my-base/link">link</a>
Korzystanie z javascript :
$location
Usługa pozwala na zmianę jedynie URL; nie pozwala na ponowne załadowanie strony. Kiedy trzeba zmienić adres URL i odświeżyć stronę lub przejdź do innej strony, należy użyć niższym poziomie API:$window.location.href
.Widzieć:
źródło
<a href="..." target="_self">
to działa dla mnie. dzięki !Mieliśmy ten sam problem, pracując z kodem JS (tj. Nie z kotwicy HTML). Oto jak rozwiązaliśmy ten problem:
W razie potrzeby wirtualnie zmień bieżący adres URL za pośrednictwem
$location
usługi. Może to być przydatne, jeśli miejsce docelowe jest tylko odmianą bieżącego adresu URL, aby można było skorzystać z$location
metod pomocniczych. Np$location.search(..., ...)
. Pobiegliśmy po prostu zmienić wartość parametru querystring.Utwórz nowy docelowy adres URL, używając aktualnego,
$location.url()
jeśli to konieczne. Aby działał, ten nowy musiał zawierać wszystko po schemacie, domenie i porcie. Czyli np. Jeśli chcesz przenieść się do:http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en
wtedy powinieneś ustawić URL jak w:
var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';
(również z prowadzeniem
'/'
).Przypisz nowy docelowy adres URL na niskim poziomie :
$window.location.href = destinationUrl;
Wymuś przeładowanie, wciąż na niskim poziomie:
$window.location.reload();
źródło
Po wyszukaniu i podaniu trafienia i sesji próbnej jestem w stanie rozwiązać ten problem, podając najpierw adres URL
następnie załaduj ponownie
źródło
Miałem ten sam problem. Kiedy używam
window.location
,$window.location
czy nawet<a href="..." target="_self">
trasa nie odświeża strony. Więc używane są usługi buforowane, co nie jest tym, czego chcę w mojej aplikacji. Rozwiązałem to, dodającwindow.location.reload()
po,window.location
aby wymusić ponowne załadowanie strony po routingu. Ta metoda wydaje się jednak ładować stronę dwukrotnie. Może to być brudna sztuczka, ale działa. Oto jak mam to teraz:źródło
Spróbuj tego
źródło