angular 右擊事件的寫法
阿新 • • 發佈:2017-05-10
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 右擊事件的寫法