javascript - 将事件对象从指令传递到回调

标签 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);

                      }
                  }
              });
          }
      };
  });

我在这里使用这个:

<div ios-dblclick="onDoubleClick($event, graph)" ></div>

graphng-repeat 指令中的一个对象。在 onDoubleClick 中,我需要访问 $event:

$scope.onDoubleClick = function($event, graph){

    console.log('in onDoubleClick and arguments are ', arguments);

    var element = $event.srcElement;

但是我不确定如何将事件从指令传递到 onDoubleClick。在控制台日志中,参数打印为:

[undefined, Object]

其中 Objectgraph。我怎样才能传回事件?

最佳答案

由于您可以使用 $eval 方法传递 locals,请考虑在调用 attrs.iosDblclick 时使用它。在内部它使用 $parse API 来评估方法并使用本地作为参数。

scope.$eval(attrs.iosDblclick, {$event: e});

Plunker Demo

另见

关于javascript - 将事件对象从指令传递到回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466274/

相关文章:

javascript - 在自定义指令的链接函数中使用 $document.off

javascript - 使用 window.onerror 获取实际的 Javascript Error 对象

javascript - 如何获取键值对的索引

javascript - 如何制作一个静态侧边栏,当页面向下滚动时它不会移动

javascript - 使用 AngularJS 函数进行排序

javascript - 在嵌套的 ng-repeat 中为我所在的任何对象动态抓取 Firebase 数据

angularjs - 当表单在指令中时如何访问 FormController?

angularjs - AngularJS 中的网站 URL 验证

angularjs - 找不到指令所需的 Controller

javascript - 为什么 Javascript 不能正确绑定(bind)我的点表达式?