Hier ist ein Beispiel. Angenommen, ich möchte eine Bildüberlagerung wie bei vielen Websites. Wenn Sie also auf eine Miniaturansicht klicken, wird über Ihrem gesamten Fenster eine schwarze Überlagerung angezeigt, in der eine größere Version des Bildes zentriert ist. Durch Klicken auf das schwarze Overlay wird es geschlossen. Durch Klicken auf das Bild wird eine Funktion aufgerufen, die das nächste Bild anzeigt.
Das HTML:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
Das 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
}
}
Das Problem ist, dass bei diesem Setup, wenn Sie auf das Bild klicken, beide nextImage()
und hideOverlay()
aufgerufen werden. Aber ich möchte nur nextImage()
angerufen werden.
Ich weiß, dass Sie das Ereignis in der folgenden nextImage()
Funktion erfassen und abbrechen können:
if (window.event) {
window.event.stopPropagation();
}
... Aber ich möchte wissen, ob es eine bessere AngularJS-Methode gibt, bei der ich nicht alle Funktionen von Elementen innerhalb des Overlays mit diesem Snippet voranstellen muss.
onclick
, nicht ng-click
.
return false
am Ende der Veranstaltung