Mam dyrektywę, która jest nagłówkiem strony z przyciskiem Wstecz i chcę po kliknięciu wrócić do poprzedniej strony. Jak to zrobić w sposób kątowy?
Próbowałem:
<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>
a to jest dyrektywa js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
ale nic się nie dzieje. Zajrzałem do interfejsu API angular.js o $ location, ale nie znalazłem nic o przycisku Wstecz lub history.back()
.
javascript
angularjs
baba-dev
źródło
źródło
Odpowiedzi:
Musisz użyć funkcji link w swojej dyrektywie:
Zobacz jsFiddle .
źródło
Kątowe trasy śledzą lokalizację przeglądarki, więc po prostu
window.history.back()
kliknięcie czegoś by działało.HTML:
JS:
Zwykle tworzę funkcję globalną o nazwie „$ back” na kontrolerze aplikacji, którą zwykle umieszczam na tagu body.
W takim razie gdziekolwiek w mojej aplikacji mogę po prostu zrobić
<a ng-click="$back()">Back</a>
(Jeśli chcesz, aby był bardziej testowalny, wstrzyknij usługę $ window do kontrolera i użyj
$window.history.back()
).źródło
Idealnie użyj prostej dyrektywy, aby utrzymać kontrolery wolne od zbędnego okna $
Użyj w ten sposób:
źródło
Kolejną miłą i wielokrotnego użytku rozwiązaniem jest utworzenie dyrektywę jak to :
użyj tego w następujący sposób:
źródło
W przypadku, gdy jest to przydatne ... Uderzyłem w „Osiągnięto iteracje 10 $ digest (). Przerwanie!” błąd podczas korzystania z $ window.history.back (); z IE9 (działa oczywiście w innych przeglądarkach).
Mam go do pracy przy użyciu:
źródło
window
. Wygląda na to, że korzystasz z$window
usługi Angular. Może to jest podstawowa przyczyna?Lub możesz po prostu użyć javascript kod :
Lubić:
źródło
Wystąpił błąd składniowy. Spróbuj tego i powinno działać:
źródło
Kątowy 4:
źródło
Dla mnie moim problemem było to, że musiałem nawigować wstecz, a następnie przejść do innego stanu. Tak więc używanie
$window.history.back()
nie działało, ponieważ z jakiegoś powodu przejście miało miejsce przed historią.back (), więc musiałem zawinąć swoje przejście w funkcję limitu czasu.To naprawiło mój problem.
źródło
W AngularJS2 znalazłem nowy sposób, może to jest to samo, ale w tej nowej wersji:
Po mojej funkcji widzę, że moja aplikacja przechodzi do poprzedniej strony z lokalizacją usgin z angular2 / routera.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
źródło