Ich habe eine Direktive, bei der es sich um einen Site-Header mit der Schaltfläche "Zurück" handelt, und ich möchte mit einem Klick zur vorherigen Seite zurückkehren. Wie mache ich das im Winkel?
Ich habe versucht:
<header class="title">
<a class="back" ng-class="icons"><img src="../media/icons/right_circular.png" ng-click="history.back()" /></a>
<h1>{{title}}</h1>
<a href="/home" class="home" ng-class="icons"><img src="../media/icons/53-house.png" /></a>
</header>
und das ist die richtlinie js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
aber nichts passiert. Ich habe in der angular.js-API nach $ location gesucht , aber nichts über back button oder gefunden history.back()
.
javascript
angularjs
baba-dev
quelle
quelle
Antworten:
Sie müssen eine Link-Funktion in Ihrer Direktive verwenden:
Siehe jsFiddle .
quelle
Winkelrouten überwachen den Standort des Browsers.
window.history.back()
Wenn Sie also einfach auf etwas klicken, funktioniert dies.HTML:
JS:
Normalerweise erstelle ich auf meinem App-Controller eine globale Funktion namens '$ back', die ich normalerweise auf das Body-Tag setze.
Dann kann ich überall in meiner App einfach machen
<a ng-click="$back()">Back</a>
(Wenn Sie möchten, dass es besser testbar ist, fügen Sie den $ window-Dienst in Ihren Controller ein und verwenden Sie ihn.
$window.history.back()
)quelle
Verwenden Sie im Idealfall eine einfache Anweisung, um Controller von redundanten $ -Fenstern freizuhalten
Verwenden Sie wie folgt:
quelle
Eine andere schöne und wiederverwendbare Lösung besteht darin, eine Richtlinie wie diese zu erstellen :
dann benutze es einfach so:
quelle
Für den Fall, dass es nützlich ist ... Ich habe die "10 $ Digest () - Iterationen erreicht. Abbruch!" Fehler bei Verwendung von $ window.history.back (); mit IE9 (funktioniert natürlich auch in anderen Browsern).
Ich habe es zum Laufen gebracht mit:
quelle
window
. Sie scheinen den$window
Angular-Dienst zu verwenden. Vielleicht ist dies die Grundursache?Oder Sie können einfach verwenden Javascript Code:
Mögen:
quelle
Es ist ein Syntaxfehler aufgetreten. Versuchen Sie dies und es sollte funktionieren:
quelle
Winkel 4:
quelle
Für mich war mein Problem, dass ich zurück navigieren und dann in einen anderen Zustand wechseln musste. Die Verwendung
$window.history.back()
funktionierte also nicht, da der Übergang aus irgendeinem Grund vor history.back () erfolgte und ich meinen Übergang in eine Timeout-Funktion wie diese einschließen musste.Dies hat mein Problem behoben.
quelle
In AngularJS2 habe ich einen neuen Weg gefunden, vielleicht ist es genau das Gleiche, aber in dieser neuen Version:
Nach meiner Funktion kann ich sehen, dass meine Anwendung von Angular2 / Router zur vorherigen Seite wechselt.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
quelle