यहाँ एक उदाहरण है। मान लीजिए कि मैं बहुत सारी साइटों की तरह एक छवि ओवरले करना चाहता हूं। इसलिए जब आप एक थंबनेल पर क्लिक करते हैं, तो आपकी पूरी विंडो पर एक काला ओवरले दिखाई देता है, और छवि का एक बड़ा संस्करण इसमें केंद्रित होता है। ब्लैक ओवरले पर क्लिक करना इसे खारिज करता है; छवि पर क्लिक करने से एक फ़ंक्शन कॉल होगा जो अगली छवि दिखाता है।
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
समारोह के अंत में