Aqui está um exemplo. Digamos que eu queira ter uma sobreposição de imagem como muitos sites. Portanto, quando você clica em uma miniatura, uma sobreposição preta aparece sobre toda a janela e uma versão maior da imagem é centralizada nela. Clicar na sobreposição preta a dispensa; clicar na imagem chama uma função que mostra a próxima imagem.
O html:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
O 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
}
}
O problema é que, com esta configuração, se você clicar na imagem, tanto nextImage()e hideOverlay()são chamados. Mas o que eu quero é que apenas nextImage()seja chamado.
Eu sei que você pode capturar e cancelar o evento na nextImage()função assim:
if (window.event) {
window.event.stopPropagation();
}
... Mas quero saber se existe uma maneira melhor de fazer o AngularJS que não exija que eu prefixe todas as funções nos elementos dentro da sobreposição com esse trecho.
onclick, não ng-click.
return falseno final da função