J'ai une directive qui est un en-tête de site avec un bouton de retour et je veux en cliquant sur pour revenir à la page précédente. Comment le faire de manière angulaire?
J'ai essayé:
<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>
et c'est la directive js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
mais rien ne se passe. J'ai regardé dans l'API angular.js à propos de $ location mais je n'ai rien trouvé sur le bouton de retour ou history.back()
.
javascript
angularjs
baba-dev
la source
la source
Réponses:
Vous devez utiliser une fonction de lien dans votre directive:
Voir jsFiddle .
la source
Les itinéraires angulaires surveillent l'emplacement du navigateur, donc simplement en
window.history.back()
cliquant sur quelque chose fonctionnerait.HTML:
JS:
Je crée généralement une fonction globale appelée «$ back» sur mon contrôleur d'application, que je place généralement sur la balise body.
Puis n'importe où dans mon application, je peux le faire
<a ng-click="$back()">Back</a>
(Si vous voulez qu'il soit plus testable, injectez le service $ window dans votre contrôleur et utilisez
$window.history.back()
).la source
Idéalement, utilisez une directive simple pour garder les contrôleurs libres de $ window redondants
Utilisez comme ceci:
la source
Une autre solution intéressante et réutilisable consiste à créer une directive comme celle-ci :
alors utilisez-le simplement comme ceci:
la source
Au cas où cela serait utile ... J'étais en train de frapper les "itérations de 10 $ digest () atteintes. Abandon!" erreur lors de l'utilisation de $ window.history.back (); avec IE9 (fonctionne bien dans d'autres navigateurs bien sûr).
Je l'ai fait fonctionner en utilisant:
la source
window
. Vous semblez utiliser le$window
service Angular. C'est peut-être la cause principale?Ou vous pouvez simplement utiliser javascript code:
Comme:
la source
Une erreur de syntaxe s'est produite. Essayez ceci et cela devrait fonctionner:
la source
Angulaire 4:
la source
Pour moi, mon problème était que je devais revenir en arrière, puis passer à un autre état. Donc, l'utilisation
$window.history.back()
n'a pas fonctionné parce que pour une raison quelconque, la transition s'est produite avant que history.back () ne se produise, j'ai donc dû envelopper ma transition dans une fonction de temporisation comme celle-ci.Cela a résolu mon problème.
la source
Dans AngularJS2, j'ai trouvé une nouvelle façon, c'est peut-être la même chose mais dans cette nouvelle version:
Après ma fonction, je peux voir que mon application va à la page précédente en utilisant l'emplacement d'angular2 / router.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html
la source