นี่คือตัวอย่าง สมมติว่าฉันต้องการให้มีภาพซ้อนทับเหมือนเว็บไซต์จำนวนมาก ดังนั้นเมื่อคุณคลิกภาพขนาดย่อจะมีการซ้อนทับสีดำปรากฏขึ้นเหนือหน้าต่างทั้งหมดของคุณและภาพที่มีขนาดใหญ่กว่าจะอยู่กึ่งกลาง การคลิกการซ้อนทับสีดำจะเป็นการยกเลิก การคลิกที่ภาพจะเรียกใช้ฟังก์ชันที่แสดงภาพถัดไป
html ที่:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
จาวาสคริปต์:
function OverlayCtrl($scope) {
$scope.hideOverlay = function() {
// Some code to hdie the overlay
}
$scope.nextImage = function() {
// Some code to find and display the next image
}
}
ปัญหาคือว่าด้วยการตั้งค่านี้หากคุณคลิกที่ภาพทั้งสองnextImage()
และhideOverlay()
ถูกเรียกว่า แต่สิ่งที่ฉันต้องการมีไว้สำหรับnextImage()
เรียกเท่านั้น
ฉันรู้ว่าคุณสามารถจับภาพและยกเลิกเหตุการณ์ในnextImage()
ฟังก์ชั่นเช่นนี้:
if (window.event) {
window.event.stopPropagation();
}
... แต่ฉันอยากรู้ว่า AngularJS มีวิธีการที่ดีกว่าหรือไม่ที่ไม่ต้องให้ฉันนำหน้าฟังก์ชั่นทั้งหมดขององค์ประกอบในการซ้อนทับด้วยตัวอย่างนี้
onclick
ng-click
return false
ในตอนท้ายของการทำงาน