AngularJS 右击事件 指令

最近有一个右击显示右击菜单的需求。

因为在浏览器右击默认会调用浏览器的右键菜单,所以在angular里没有像ng-click和ng-dblclick自带的ng-right-click的指令,只能靠我们自己实现。

我在stackoverflow上找了一下,果然有人提了这样的问题。我就参考了一下,实现方式如下:


angular.module(‘app’).directive(‘ngRightClick’,function(){
return {
restrict : ‘A’,
scope : {
callback : ‘&?ngRightClick’
},
link : function(scope, element, attrs){
element.bind(‘contextmenu’, event => {
scope.$apply(function () {
event.preventDefault();
//如果有回调函数
scope.callback();
});
});
}
}
});

html里指令使用方法如下:

<span ng-click=”click()” ng-right-click=”rightClick()”></span>
controller写法:


angular.module(‘app’,[]).controller(‘myController’,function($scope){
$scope.click = function(){
console.log(‘鼠标左击’);
};
$scope.rightClick = function(){
console.log(‘鼠标右击’);
};
});

参考自 stackoverflow : http://stackoverflow.com/questions/15731634/how-do-i-handle-right-click-events-in-angular-js .