2017-08-07 86 views
0

我有一个html元素,可以拖动和下降&也可以点击做另一个动作,我想区分这两个动作,所以我想我会用ng-mousedown & ng-mouseup并计算它们之间的时间差,并根据这些信息我可以判断这是点击还是点击并保持(又称为拖放)。区分点击并按住并点击

所以元素看起来是这样的: <a ng-mousedown="mouseDownStudent()" ng-mouseup="mouseUpStudent()"> {{student.name}} </a>

而我想要做的是沿着线的东西:

 var isMouseDown = false; 
     var clickAndHoldTime = 0; 
     $scope.mouseDownStudent = function(){ 
      isMouseDown = true; 
      while(isMouseDown){ 
       clickAndHoldTime++; 
      } 
     } 

     $scope.mouseUpStudent = function(){ 
      isMouseDown = false; 
      // If clickAndHoldTime > 100 ... it's a click 
     } 

当然,这不会工作,while循环不会停止,我想过使用$interval,但不知道它如何适应这种情况。

回答

1

您在实施中非常接近。你想要做的就是在mousedown上捕获当前时间,然后在mouseup上查找已用时间。您可以通过捕获当前的日期,然后在mouseup后找到差异来做到这一点。

let startTime = 0; 
    $scope.mouseDownStudent = function() { 
     // Capture current time 
     startTime = new Date(); 
    } 

    $scope.mouseUpStudent = function() { 
     // Get current time 
     let currentTime = new Date(); 

     // Get elapsed time in ms 
     let elapsedTime = currentTime - startTime; 

     if (elapsedTime > 100) { ... } 
    } 
+0

是的,这是完美的,谢谢! –