Xin chào, đây là một câu hỏi cũ nhưng tôi có một giải pháp mà tôi nghĩ có thể đơn giản hơn trong một số trường hợp. Các ngMousedown (và ngMouseup) chỉ được kích hoạt bởi nút chuột phải và có quyền truy cập vào các sự kiện chuột ban đầu thông qua $event
vì vậy bạn có thể làm theo cách này:
<span ng-mousedown="handleClick($event)"
oncontextmenu="return false"> <!-- use this to prevent context menu -->
{{getPointsSpent()}}
</span>
Sau đó, trong bộ điều khiển, bạn có thể làm như sau:
$scope.handleClick(evt) {
switch(evt.which) {
case 1:
increment(); // this is left click
break;
case 2:
// in case you need some middle click things
break;
case 3:
decrement(); // this is right click
break;
default:
alert("you have a strange mouse!");
break;
}
}
Đây là working fiddle. Nó hoạt động giống như câu trả lời được chấp nhận nhưng không yêu cầu tạo ra một chỉ thị hoàn toàn mới. Mặc dù chỉ thị có thể là giải pháp tốt hơn, đặc biệt nếu bạn định đính kèm các chức năng nhấp chuột phải vào nhiều thứ. Nhưng dù sao, một lựa chọn khác.
Điều này làm việc tuyệt vời, nhưng nếu tôi cố gắng mở một cửa sổ mới từ trình xử lý, nó sẽ bị chặn khi được kích hoạt bằng nhấp chuột phải và không khi được kích hoạt bằng nhấp chuột trái. Tôi đang trên chrome. http://jsfiddle.net/aslakhellesoy/QLHUV/3/ –
@ AslakHellesøy Có lẽ vì trình duyệt không nhận ra chỉ thị ng-right-click là sự kiện do người dùng khởi tạo. – Magne
@ AslakHellesøy Làm việc cho tôi trong Chrome (phiên bản 34.0.1847.116 m) – Martin