Đây là một ví dụ. Giả sử tôi muốn có một lớp phủ hình ảnh giống như nhiều trang web. Vì vậy, khi bạn nhấp vào hình thu nhỏ, lớp phủ màu đen sẽ xuất hiện trên toàn bộ cửa sổ của bạn và một phiên bản lớn hơn của hình ảnh được đặt ở giữa. Nhấp vào lớp phủ màu đen sẽ loại bỏ nó; nhấp vào hình ảnh sẽ gọi một chức năng hiển thị hình ảnh tiếp theo.
Các html:
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
Các 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
}
}
Vấn đề là với thiết lập này, nếu bạn nhấp vào hình ảnh, cả hai nextImage()
và hideOverlay()
được gọi. Nhưng những gì tôi muốn là chỉ nextImage()
được gọi.
Tôi biết bạn có thể chụp và hủy sự kiện trong nextImage()
chức năng như thế này:
if (window.event) {
window.event.stopPropagation();
}
... Nhưng tôi muốn biết liệu có cách nào tốt hơn để thực hiện AngularJS không yêu cầu tôi phải thêm tiền tố vào tất cả các chức năng trên các phần tử bên trong lớp phủ với đoạn mã này.
onclick
chứ không phải ng-click
.
return false
ở cuối chức năng