Mar*_*ark 5 javascript angularjs angularjs-directive
我使用的是 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);
}
}
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
我在这里用这个:
<div ios-dblclick="onDoubleClick($event, graph)" ></div>
Run Code Online (Sandbox Code Playgroud)
graph是指令内的对象ng-repeat。在 onDoubleClick 中,我需要访问$event:
$scope.onDoubleClick = function($event, graph){
console.log('in onDoubleClick and arguments are ', arguments);
var element = $event.srcElement;
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何将事件从指令传递到onDoubleClick. 在控制台日志中,参数打印如下:
[undefined, Object]
Run Code Online (Sandbox Code Playgroud)
哪里。Object graph我怎样才能传回该事件?
由于您可以locals通过$eval方法传递,因此请考虑在调用时使用它attrs.iosDblclick。在内部它使用$parseAPI 来评估方法并使用 local 作为参数。
scope.$eval(attrs.iosDblclick, {$event: e});
Run Code Online (Sandbox Code Playgroud)
也可以看看
| 归档时间: |
|
| 查看次数: |
1687 次 |
| 最近记录: |