Ecco un esempio Diciamo che voglio avere una sovrapposizione di immagini come molti siti. Quindi, quando fai clic su una miniatura, viene visualizzata una sovrapposizione nera su tutta la finestra e una versione più grande dell'immagine viene centrata in essa. Facendo clic sulla sovrapposizione nera la si chiude; facendo clic sull'immagine verrà chiamata una funzione che mostra l'immagine successiva.
Il codice HTML:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
Il 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
}
}
Il problema è che con questa configurazione, se si fa clic sull'immagine, entrambi nextImage()
e hideOverlay()
vengono chiamati. Ma quello che voglio è solo nextImage()
per essere chiamato.
So che puoi catturare e cancellare l'evento nella nextImage()
funzione in questo modo:
if (window.event) {
window.event.stopPropagation();
}
... Ma voglio sapere se esiste un modo migliore di AngularJS per farlo che non mi richiederà di aggiungere un prefisso a tutte le funzioni sugli elementi all'interno della sovrapposizione con questo frammento.
onclick
, no ng-click
.
return false
al termine della funzione