1. 程式人生 > >angular 右擊事件的寫法

angular 右擊事件的寫法

cat 字符串 bin tde 表達 oop right element per

.directive(‘ngRightClick‘, function ($parse){
        return function (scope, element, attrs){
            var fn = $parse(attrs.ngRightClick);
            element.bind(‘contextmenu‘, function (event){
               scope.$apply(function (){
                   event.preventDefault();
                   fn(scope, {$event:event})
               });
            });
        }
    });

其中,$parse是手動解析服務。

使用自定義指令,返回一個右擊函數,$apply監視$scope的變化。

this.$get = [‘$filter‘, ‘$sniffer‘, ‘$log‘, function($filter, $sniffer, $log) {
$parseOptions.csp = $sniffer.csp;
promiseWarning = function promiseWarningFn(fullExp) {
    if (!$parseOptions.logPromiseWarnings || promiseWarningCache.hasOwnProperty(fullExp)) return
; promiseWarningCache[fullExp] = true; $log.warn(‘[$parse] Promise found in the expression `‘ + fullExp + ‘`. ‘ + ‘Automatic unwrapping of promises in Angular expressions is deprecated.‘); }; return function(exp) { var parsedExpression; switch (typeof exp) { case ‘string‘:
if (cache.hasOwnProperty(exp)) { return cache[exp]; } var lexer = new Lexer($parseOptions); var parser = new Parser(lexer, $filter, $parseOptions); parsedExpression = parser.parse(exp, false); if (exp !== ‘hasOwnProperty‘) { cache[exp] = parsedExpression; } return parsedExpression; case ‘function‘: return exp; default: return noop; } }; }];

這是$parse服務的$get屬性,可以看出,當表達式為字符串的時候,進行一個手動的解析。如果是函數,直接返回。

angular 右擊事件的寫法