У меня есть директива, которая является заголовком сайта с кнопкой «Назад», и я хочу щелкнуть, чтобы вернуться на предыдущую страницу. Как мне сделать это угловым способом?
Я пытался:
<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>
и это директива JS:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
но ничего не происходит Я посмотрел в API angular.js о $ location, но не нашел ничего о кнопке back или history.back()
.
javascript
angularjs
Бабы-DEV
источник
источник
Ответы:
Вам нужно использовать функцию ссылки в вашей директиве:
Смотрите jsFiddle .
источник
Угловые маршруты следят за местоположением браузера, поэтому будет достаточно просто
window.history.back()
нажать на что-нибудь.HTML:
JS:
Я обычно создаю глобальную функцию с именем $ back на контроллере приложения, которую я обычно помещаю в тег body.
Тогда в любом месте моего приложения я могу просто сделать
<a ng-click="$back()">Back</a>
(Если вы хотите, чтобы он был более тестируемым, вставьте службу $ window в ваш контроллер и используйте
$window.history.back()
).источник
В идеале используйте простую директиву, чтобы сохранить контроллеры свободными от избыточного окна $
Используйте как это:
источник
Другое хорошее и многократно используемое решение - создать директиву, подобную этой :
тогда просто используйте это так:
источник
В случае, если это полезно ... Я нажимал "10 $ digest () достигли итераций. Отмена!" ошибка при использовании $ window.history.back (); с IE9 (работает нормально в других браузерах, конечно).
Я получил его на работу с помощью:
источник
window
. Вы, кажется, используете$window
сервис Angular. Может быть, это коренная причина?Или вы можете просто использовать Javascript код:
Подобно:
источник
Произошла синтаксическая ошибка. Попробуйте это, и это должно работать:
источник
Угловой 4:
источник
Для меня моей проблемой было то, что мне нужно было вернуться назад и затем перейти в другое состояние. Поэтому использование
$window.history.back()
не сработало, потому что по какой-то причине переход произошел до того, как произошло history.back (), поэтому мне пришлось обернуть свой переход в функцию тайм-аута следующим образом.Это исправило мою проблему.
источник
В AngularJS2 я нашел новый способ, может быть, это то же самое, но в этой новой версии:
После выполнения моей функции я вижу, что мое приложение отправляется на предыдущую страницу, используя местоположение angular2 / router.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
источник