0

JS

angular.module('my-app', []).controller('Ctrl', function ($scope, $timeout) {
    var t;

    $scope.click = function () {
        t = $timeout(function () {
            alert('click');
        }, 1000);
    };

    $scope.dblclick = function () {
        $timeout.cancel(t);
        alert('dblclick');
    };

});

模板

<div ng-app='my-app' ng-controller='Ctrl'>
    <button ng-click='click()' ng-dblclick='dblclick()'>push</button>
</div>

提琴手

http://jsfiddle.net/Q6CXW/

4

1 回答 1

6

有趣的是,所以当您双击时,您只会调用一次超时取消,但在此之前计算两次单击会创建两个计时器。你只取消了一个。

这是一个固定的小提琴:

http://jsfiddle.net/Q6CXW/1/

以及修改后的 JS:

angular.module('my-app', [])
.controller('Ctrl', function ($scope, $timeout) {
    var t=[];

    $scope.click = function () {
        t.push($timeout(function () {
            alert('click');
        }, 1000));
    };

    $scope.dblclick = function () {
        for(var i=0;i<t.length;i++)
        {
            $timeout.cancel(t[i]);
        }
        t=[];
        alert('dblclick');
    };

});
于 2013-07-15T14:40:50.427 回答