Eu tenho uma diretiva que é o cabeçalho do site com o botão Voltar e quero clicar no botão para voltar à página anterior. Como faço isso da maneira angular?
Eu tentei:
<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>
e esta é a diretiva js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
mas nada acontece. Procurei na API angular.js cerca de $ location, mas não encontrei nada sobre o botão voltar ou history.back()
.
javascript
angularjs
baba-dev
fonte
fonte
Respostas:
Você precisa usar uma função de link em sua diretiva:
Veja jsFiddle .
fonte
As rotas angulares observam a localização do navegador; portanto, basta
window.history.back()
clicar em algo que funcione.HTML:
JS:
Normalmente, crio uma função global chamada '$ back' no meu controlador de aplicativo, que geralmente coloco na etiqueta do corpo.
Então, em qualquer lugar do meu aplicativo, eu posso fazer
<a ng-click="$back()">Back</a>
(Se você quiser que seja mais testável, injete o serviço $ window no seu controlador e use
$window.history.back()
).fonte
Idealmente, use uma diretiva simples para manter os controladores livres de janelas $ redundantes
Use assim:
fonte
Outra solução agradável e reutilizável é criar uma diretiva como esta :
então use-o assim:
fonte
Caso isso seja útil ... eu estava atingindo as "10 $ digerências () alcançadas. Interrompendo!" erro ao usar $ window.history.back (); com o IE9 (funciona bem em outros navegadores, é claro).
Eu consegui trabalhar usando:
fonte
window
. Você parece estar usando o$window
serviço Angular. Talvez esta seja a causa raiz?Ou você pode simplesmente usar javascript código:
Gostar:
fonte
Ocorreu um erro de sintaxe. Tente isso e deve funcionar:
fonte
Angular 4:
fonte
Para mim, meu problema era precisar navegar de volta e fazer a transição para outro estado. Portanto, o uso
$window.history.back()
não funcionou porque, por algum motivo, a transição ocorreu antes do início do history.back (), então tive que agrupar minha transição em uma função de tempo limite dessa maneira.Isso corrigiu meu problema.
fonte
No AngularJS2 eu encontrei uma nova maneira, talvez seja a mesma coisa, mas nesta nova versão:
Após minha função, posso ver que meu aplicativo está indo para a página anterior usando a localização do angular2 / router.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
fonte