我使用的是 Angular 1.5.6。
我有一个检查双击的指令:
angular.module('redMatter.analyse')
.directive('iosDblclick',
function () {
var DblClickInterval = 300; //milliseconds
var firstClickTime;
var waitingSecondClick = false;
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('click', function (e) {
if (!waitingSecondClick) {
firstClickTime = (new Date()).getTime();
waitingSecondClick = true;
setTimeout(function () {
waitingSecondClick = false;
}, DblClickInterval);
}
else {
waitingSecondClick = false;
var time = (new Date()).getTime();
if (time - firstClickTime < DblClickInterval) {
scope.$apply(attrs.iosDblclick);
}
}
});
}
};
});
我在这里使用这个:
<div ios-dblclick="onDoubleClick($event, graph)" ></div>
graph
是 ng-repeat
指令中的一个对象。在 onDoubleClick 中,我需要访问 $event
:
$scope.onDoubleClick = function($event, graph){
console.log('in onDoubleClick and arguments are ', arguments);
var element = $event.srcElement;
但是我不确定如何将事件从指令传递到 onDoubleClick
。在控制台日志中,参数打印为:
[undefined, Object]
其中 Object
是 graph
。我怎样才能传回事件?
最佳答案
由于您可以使用 $eval
方法传递 locals
,请考虑在调用 attrs.iosDblclick
时使用它。在内部它使用 $parse
API 来评估方法并使用本地作为参数。
scope.$eval(attrs.iosDblclick, {$event: e});
另见
关于javascript - 将事件对象从指令传递到回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466274/