Ciao questa è una vecchia domanda ma ho una soluzione che a mio avviso potrebbe essere più semplice in alcuni casi. Le direttive ngMousedown (e ngMouseup) sono innescato dal tasto destro del mouse e avere accesso alla manifestazione originale del mouse attraverso $event
in modo che si possa fare in questo modo:
<span ng-mousedown="handleClick($event)"
oncontextmenu="return false"> <!-- use this to prevent context menu -->
{{getPointsSpent()}}
</span>
Poi nel controller, è possibile effettuare le seguenti operazioni:
$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;
}
}
Ecco un working fiddle. Funziona allo stesso modo della risposta accettata ma non richiede la creazione di una direttiva completamente nuova. Anche se una direttiva può essere una soluzione migliore, soprattutto se si prevede di allegare funzioni di clic con il pulsante destro a un sacco di cose. Ma comunque, un'altra opzione.
Questo funziona benissimo, ma se provo ad aprire una nuova finestra dal gestore viene bloccato quando attivato facendo clic con il tasto destro del mouse e non quando attivato dal clic sinistro. Sono al cromo. http://jsfiddle.net/aslakhellesoy/QLHUV/3/ –
@ AslakHellesøy Probabilmente perché il browser non riconosce la direttiva ng-right-click come evento avviato dall'utente. – Magne
@ AslakHellesøy Funziona per me in Chrome (versione 34.0.1847.116 m) – Martin