Ini sebuah contoh. Katakanlah saya ingin memiliki hamparan gambar seperti banyak situs. Jadi ketika Anda mengklik thumbnail, overlay hitam muncul di seluruh jendela Anda, dan versi gambar yang lebih besar berada di tengahnya. Mengklik overlay hitam mengabaikannya; mengklik gambar akan memanggil fungsi yang menampilkan gambar berikutnya.
Html:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
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
}
}
Masalahnya adalah bahwa dengan pengaturan ini, jika Anda mengklik gambar, keduanya nextImage()
dan hideOverlay()
dipanggil. Tetapi yang saya inginkan hanyalah nextImage()
dipanggil.
Saya tahu Anda dapat menangkap dan membatalkan acara dalam nextImage()
fungsi seperti ini:
if (window.event) {
window.event.stopPropagation();
}
... Tapi saya ingin tahu apakah ada cara AngularJS yang lebih baik untuk melakukannya yang tidak mengharuskan saya untuk awalan semua fungsi pada elemen di dalam overlay dengan cuplikan ini.
onclick
, bukan ng-click
.
return false
di akhir acara