要素に ng-dblclick ディレクティブが設定されていても、AngularJS は常に ng-click イベントのみを発生させるため、AngularJS を使用したシングルクリックとダブルクリックの両方のイベント処理を探していました。
解決策を求める人のための実用的なコードを次に示します。
JS:
function MyController($scope) {
var waitingForSecondClick = false;
$scope.singleClickAction = function() {
executingDoubleClick = false;
if (waitingForSecondClick) {
waitingForSecondClick = false;
executingDoubleClick = true;
return $scope.doubleClickAction();
}
waitingForSecondClick = true;
setTimeout(function() {
waitingForSecondClick = false;
return singleClickOnlyAction();
}, 250); // delay
/*
* Code executed with single AND double-click goes here.
* ...
*/
var singleClickOnlyAction = function() {
if (executingDoubleClick) return;
/*
* Code executed ONLY with single-click goes here.
* ...
*/
}
}
$scope.doubleClickAction = function() {
/*
* Code executed ONLY with double-click goes here.
* ...
*/
};
}
HTML:
<div ng-controller="MyController">
<a href="#" ng-click="singleClickAction()">CLICK</a>
</div>
私の質問は (私は AngularJS の初心者なので) です: より経験豊富な誰かが、これらの両方のイベントを処理するための素晴らしいディレクティブを書くことができますか?
私の意見では、完璧な方法は、ng-click、ng-dblclick の動作を変更し、シングルクリックのみのコードを処理するための「ng-sglclick」ディレクティブを追加することです。それが可能かどうかはわかりませんが、誰にとっても非常に便利だと思います。
ご意見をお聞かせください。