Voici un exemple. Disons que je veux avoir une superposition d'image comme beaucoup de sites. Ainsi, lorsque vous cliquez sur une vignette, une superposition noire apparaît sur toute votre fenêtre et une version plus grande de l'image y est centrée. Cliquer sur la superposition noire la rejette; cliquer sur l'image appellera une fonction qui affiche l'image suivante.
Le html:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
Le javascript:
function OverlayCtrl($scope) {
$scope.hideOverlay = function() {
// Some code to hdie the overlay
}
$scope.nextImage = function() {
// Some code to find and display the next image
}
}
Le problème est qu'avec cette configuration, si vous cliquez sur l'image, les deux nextImage()
et hideOverlay()
sont appelés. Mais ce que je veux, c'est seulement nextImage()
être appelé.
Je sais que vous pouvez capturer et annuler l'événement dans la nextImage()
fonction comme ceci:
if (window.event) {
window.event.stopPropagation();
}
... Mais je veux savoir s'il existe une meilleure façon AngularJS de le faire qui ne m'obligera pas à préfixer toutes les fonctions sur les éléments à l'intérieur de la superposition avec cet extrait de code.
onclick
, non ng-click
.
return false
à la fin de la fonction