Я искал обработку событий с одним и двумя кликами с помощью AngularJS, так как AngularJS всегда запускает только событие ng-click, даже если для нашего элемента установлена директива ng-dblclick.
Вот какой рабочий код для тех, кто ищет решение:
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" для обработки кода с одним кликом. Не знаю, возможно ли это, но я считаю это очень полезным для всех.
Не стесняйтесь делиться своими мнениями!