<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Ich möchte die Seite neu laden. Wie kann ich das machen?
quelle
<a ng-href="#" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Ich möchte die Seite neu laden. Wie kann ich das machen?
Sie können die reload
Methode des $route
Dienstes verwenden. Injizieren Sie $route
in Ihren Controller und erstellen Sie dann eine Methode reloadRoute
auf Ihrem $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
Dann können Sie es auf dem Link wie folgt verwenden:
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
Diese Methode bewirkt, dass die aktuelle Route neu geladen wird. Wenn Sie jedoch eine vollständige Aktualisierung durchführen möchten, können Sie Folgendes injizieren $window
und verwenden:
$scope.reloadRoute = function() {
$window.location.reload();
}
Später bearbeiten (UI-Router):
Wie von JamesEddyEdwards und Dunc in ihren Antworten erwähnt, können Sie bei Verwendung eines Angular-UI / UI-Routers die folgende Methode verwenden, um den aktuellen Status / die aktuelle Route neu zu laden. Einfach spritzen $state
statt $route
und dann haben Sie:
$scope.reloadRoute = function() {
$state.reload();
};
window
Objekt wird durch$window
Service zur Verfügung gestellt , um das Testen und Verspotten zu erleichtern . Sie können mit etwas wie:Und :
Als Randnotiz denke ich nicht, dass $ route.reload () tatsächlich die Seite neu lädt, sondern nur die Route .
quelle
$window
anstelle vonwindow
.$window
Dokumente erklärt , hauptsächlich, weilreloadPage
es (besser) testbar wäre, wenn es verwendet wird$window
.Macht den Trick.
Keine Notwendigkeit für Routen oder irgendetwas einfach nur altes js
quelle
Ähnlich wie Alexandrins Antwort, jedoch mit $ state anstelle von $ route:
(Aus JimTheDevs SO-Antwort hier .)
quelle
Wenn Sie Angulars fortgeschritteneren UI -Router verwenden, den ich definitiv empfehlen würde, können Sie jetzt einfach Folgendes verwenden:
Das ist im Wesentlichen dasselbe wie Duncs Antwort.
quelle
Meine Lösung, um die Endlosschleife zu vermeiden, bestand darin, einen anderen Status zu erstellen, der die Umleitung vorgenommen hat:
quelle
Winkel 2+
Ich habe dies bei der Suche nach Angular 2+ gefunden. Hier ist der Weg:
quelle
Es ist einfach genug, nur zu verwenden
$route.reload()
(vergessen Sie nicht, $ route in Ihren Controller einzufügen), aber in Ihrem Beispiel könnten Sie einfach "href" anstelle von "ng-href" verwenden:Sie müssen ng-href nur verwenden, um den Benutzer vor ungültigen Links zu schützen, die durch Klicken verursacht werden, bevor Angular den Inhalt der {{}} -Tags ersetzt hat.
quelle
Unter Angular 1.5 hatte ich Probleme mit dem ordnungsgemäßen Laden der Daten, nachdem ich einige der oben genannten Lösungen ausprobiert hatte, bei denen nur die Daten ohne vollständige Seitenaktualisierung neu geladen werden sollten. Ich habe jedoch festgestellt, dass alles gut funktioniert, wenn ich zu einer anderen Route gehe und dann zur aktuellen zurückkehre. Wenn ich jedoch nur die aktuelle Route mit neu laden möchte
$route.reload()
, wird ein Teil des Codes nicht ordnungsgemäß ausgeführt. Dann habe ich versucht, auf folgende Weise zur aktuellen Route umzuleiten:und fügen Sie in der Modulkonfiguration eine weitere hinzu
when
:und es funktioniert gut für mich. Es wird nicht die gesamte Seite aktualisiert, sondern nur der aktuelle Controller und die Vorlage werden neu geladen. Ich weiß, dass es ein bisschen hackig ist, aber das war die einzige Lösung, die ich gefunden habe.
quelle
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; Es müssen keine zufälligen Routen erstellt werden. Es wäre jedoch interessant zu sehen, welcher Code für Sie nicht neu bewertet wird. Es sieht so aus, als würden sogarredirectTo
s undresolve
Funktionen auf einem normalen$route.reload()
Computer erneut ausgeführt (siehe die console.logs).und in der Steuerung
und in der Routendatei
Wenn die in der URL übergebene ID mit der ID übereinstimmt, die durch Klicken auf den Anker aufgerufen wird, laden Sie sie einfach neu, andernfalls folgen Sie der angeforderten Route.
Bitte helfen Sie mir, diese Antwort zu verbessern, wenn dies hilfreich ist. Vorschläge sind willkommen.
quelle
Dies kann durch Aufrufen der reload () -Methode des Fensterobjekts in einfachem JavaScript erfolgen
quelle
Ich würde vorschlagen, die Seite zu verweisen. Offizieller Vorschlag
https://docs.angularjs.org/guide/$location
quelle
Dies kann durch Aufrufen der reload () -Methode in JavaScript erfolgen.
quelle