Привет, это старый вопрос, но у меня есть решение, которое, я думаю, может быть проще в некоторых случаях. Директивы ngMousedown (и ngMouseup) вызываются правой кнопкой мыши и иметь доступ к исходному событию мыши через $event
так что вы могли бы сделать это следующим образом:
<span ng-mousedown="handleClick($event)"
oncontextmenu="return false"> <!-- use this to prevent context menu -->
{{getPointsSpent()}}
</span>
Затем в контроллере, вы можете сделать следующее:
$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;
}
}
Вот working fiddle. Он работает так же, как и принятый ответ, но не требует создания совершенно новой директивы. Хотя директива может быть лучшим решением, особенно если вы планируете прикрепить функции правого щелчка к множеству вещей. Но в любом случае, другой вариант.
Это отлично работает, но если я попытаюсь открыть новое окно из обработчика, он блокируется при срабатывании по правому клику, а не при нажатии левой кнопкой мыши. Я на хроме. http://jsfiddle.net/aslakhellesoy/QLHUV/3/ –
@ AslakHellesøy Возможно, потому, что браузер не распознает директиву ng-right-click в качестве инициированного пользователем события. – Magne
@ AslakHellesøy Работает для меня в Chrome (версия 34.0.1847.116 м) – Martin