Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 区分单击和按住并单击_Angularjs - Fatal编程技术网

Angularjs 区分单击和按住并单击

Angularjs 区分单击和按住并单击,angularjs,Angularjs,我有一个可以拖放的html元素,也可以单击它来执行另一个操作,我想区分这两个操作,所以我想我应该使用ng mousedown和ng mouseup,并计算它们之间的时间差,根据这一点,我可以判断这是单击还是单击并按住拖动 所以元素看起来像这样: {{student.name} 我想做的事情大致如下: var isMouseDown = false; var clickAndHoldTime = 0; $scope.mouseDownStudent

我有一个可以拖放的html元素,也可以单击它来执行另一个操作,我想区分这两个操作,所以我想我应该使用ng mousedown和ng mouseup,并计算它们之间的时间差,根据这一点,我可以判断这是单击还是单击并按住拖动

所以元素看起来像这样: {{student.name}

我想做的事情大致如下:

        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,但不确定它是否适合这种情况。

您的实现非常接近。您要做的是在mousedown上捕获当前时间,然后在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) { ... }
    }