Tengo una directiva que es el encabezado del sitio con el botón Atrás y quiero hacer clic para volver a la página anterior. ¿Cómo lo hago de forma angular?
Yo he tratado:
<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>
y esta es la directiva js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
pero nada pasa. Miré en la API angular.js sobre $ location pero no encontré nada sobre el botón Atrás o history.back()
.
javascript
angularjs
baba-dev
fuente
fuente
Respuestas:
Necesita usar una función de enlace en su directiva:
Ver jsFiddle .
fuente
Las rutas angulares miran la ubicación del navegador, por lo que simplemente usar
window.history.back()
al hacer clic en algo funcionaría.HTML:
JS:
Generalmente creo una función global llamada '$ back' en el controlador de mi aplicación, que generalmente pongo en la etiqueta del cuerpo.
Luego, en cualquier lugar de mi aplicación, puedo hacer
<a ng-click="$back()">Back</a>
(Si desea que sea más comprobable, inyecte el servicio $ window en su controlador y úselo
$window.history.back()
).fuente
Idealmente, use una directiva simple para mantener los controladores libres de $ window redundante
Usar así:
fuente
Otra solución agradable y reutilizable es crear una directiva como esta :
entonces úsalo así:
fuente
En caso de que sea útil ... Estaba alcanzando las "10 $ digest () iteraciones alcanzadas. ¡Abortando!" error al usar $ window.history.back (); con IE9 (funciona bien en otros navegadores, por supuesto).
Lo puse a trabajar usando:
fuente
window
. Parece que estás usando el$window
servicio Angular. Tal vez esta es la causa raíz?O simplemente puedes usar javascript codigo:
Me gusta:
fuente
Hubo un error de sintaxis. Prueba esto y debería funcionar:
fuente
Angular 4:
fuente
Para mí, mi problema era que necesitaba navegar hacia atrás y luego hacer la transición a otro estado. Por lo tanto, el uso
$window.history.back()
no funcionó porque, por alguna razón, la transición ocurrió antes de que ocurriera history.back (), así que tuve que ajustar mi transición en una función de tiempo de espera así.Esto solucionó mi problema.
fuente
En AngularJS2 encontré una nueva forma, tal vez sea lo mismo, pero en esta nueva versión:
Después de mi función, puedo ver que mi aplicación va a la ubicación de uso de la página anterior desde angular2 / router.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
fuente