Ich möchte eine Umleitung durchführen, die ein erneutes Laden der gesamten Seite durchführt, damit die Cookies von meinem Webserver beim Laden der Seite aktualisiert werden. window.location = "/#/Next"
und window.location.href = "/#/Next"
funktionieren nicht, sie machen eine Angular-Route, die den Server nicht trifft.
Was ist der richtige Weg, um eine vollständige Serveranforderung innerhalb eines Angular-Controllers zu stellen?
Antworten:
Für
<a>
Tags :Sie müssen
target="_self"
auf Ihrem<a>
Tag klebenEs gibt drei Fälle, in denen AngularJS ein erneutes Laden der gesamten Seite durchführt:
Beispiel:
<a href="https://stackoverflow.com/ext/link?a=b" target="_self">link</a>
Beispiel:
<a href="http://angularjs.org/">link</a>
Beispiel:
<a href="https://stackoverflow.com/not-my-base/link">link</a>
Verwenden von Javascript :
Mit dem
$location
Dienst können Sie nur die URL ändern. Sie können die Seite nicht neu laden. Wenn Sie die URL ändern und die Seite neu laden oder zu einer anderen Seite navigieren müssen, verwenden Sie bitte eine API auf niedrigerer Ebene :$window.location.href
.Sehen:
quelle
<a href="..." target="_self">
hat bei mir funktioniert. Vielen Dank !Wir hatten das gleiche Problem mit JS-Code (dh nicht mit HTML-Anker). So haben wir das gelöst:
Ändern Sie bei Bedarf die aktuelle URL virtuell über den
$location
Dienst. Dies kann nützlich sein, wenn Ihr Ziel nur eine Variation der aktuellen URL ist, damit Sie die Hilfsmethoden nutzen$location
können. ZB sind wir gelaufen,$location.search(..., ...)
um nur den Wert eines Querystring-Parameters zu ändern.Erstellen Sie die neue Ziel-URL unter Verwendung der aktuellen URL,
$location.url()
falls erforderlich. Um zu funktionieren, musste dieses neue alles nach Schema, Domäne und Port enthalten. Also zB wenn Sie umziehen möchten zu:http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=de
dann sollten Sie die URL wie folgt einstellen:
var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';
(auch mit der Führung
'/'
).Weisen Sie eine neue Ziel-URL auf niedriger Ebene zu :
$window.location.href = destinationUrl;
Nachladen erzwingen, immer noch auf niedrigem Niveau:
$window.location.reload();
quelle
Nachdem ich eine Treffer- und Probesitzung gesucht und gegeben habe, kann ich sie lösen, indem ich zuerst eine URL wie angegeben habe
dann neu laden
quelle
Ich hatte das gleiche Problem. Wenn ich
window.location
,$window.location
oder auch<a href="..." target="_self">
die Route der Seite nicht aktualisiert. Daher werden die zwischengespeicherten Dienste verwendet, was ich in meiner App nicht möchte. Ich habe es durch Hinzufügen vonwindow.location.reload()
after behobenwindow.location
, um das Neuladen der Seite nach dem Routing zu erzwingen. Diese Methode scheint die Seite jedoch zweimal zu laden. Könnte ein schmutziger Trick sein, aber er macht die Arbeit. So habe ich es jetzt:quelle
Versuche dies
quelle