在 ng-swipe-left 上抑制 ng-click 动作
Suppress ng-click action upon ng-swipe-left
单击或向左滑动时,按钮在触摸屏上运行完美:
<button ng-click="click(it)" ng-swipe-left="leftSwipe(it)" />
但是,在通过鼠标单击和左键拖动组合实现左扫的桌面上,也会触发单击事件。
有什么办法可以抑制它吗?
好吧,我没有找到任何简单的方法,所以这里有一种解决方法和一种半抑制方法,两者都依赖于 $timeout,但考虑到你依赖于人工交互,我认为我们没问题。
Semi-Suppression:我们要忽略点击这个摘要循环和return来监听事件下一个摘要周期。
$scope.leftSwipe = function(event){
angular.element(event.target).unbind('click');
$timeout(function(){angular.element(event.target)
.bind('click', function(it) {$scope.click(it);})},0);
};
这里我们将事件传递给 'left-swipe' 函数以获取目标元素,如果您不想将事件作为参数传递(取决于您的代码),您可以获取元素硬编码 ID使用查询 ($('#yourButtonId')
) 或不使用 (document.querySelector('#yourButtonId')
) 并改用它。请注意,在此处重新处理点击事件将需要再次传递参数(在您的情况下为'it'?),这就是为什么它被包装在另一个函数中而不是直接调用的原因。
解决方法:我认为这要简单得多,但这取决于您和代码。
var hasSwiped = false;
$scope.click = function(event){
if (!hasSwiped){
...
}
};
$scope.leftSwipe = function(event){
hasSwiped = true;
$timeout(function(){ hasSwiped = false; },1000);
};
这里我们简单地创建一个变量 'hasSwiped' 并将其设置为 true 一旦滑动并仅在 'click' 事件触发后将其重置为 false (这取决于应用程序,但一秒钟听起来在滑动和点击之间对我来说是合理的)。在点击事件中,只要检查这个标志是否被触发。
希望这可以帮助,
祝你好运!
单击或向左滑动时,按钮在触摸屏上运行完美:
<button ng-click="click(it)" ng-swipe-left="leftSwipe(it)" />
但是,在通过鼠标单击和左键拖动组合实现左扫的桌面上,也会触发单击事件。
有什么办法可以抑制它吗?
好吧,我没有找到任何简单的方法,所以这里有一种解决方法和一种半抑制方法,两者都依赖于 $timeout,但考虑到你依赖于人工交互,我认为我们没问题。
Semi-Suppression:我们要忽略点击这个摘要循环和return来监听事件下一个摘要周期。
$scope.leftSwipe = function(event){
angular.element(event.target).unbind('click');
$timeout(function(){angular.element(event.target)
.bind('click', function(it) {$scope.click(it);})},0);
};
这里我们将事件传递给 'left-swipe' 函数以获取目标元素,如果您不想将事件作为参数传递(取决于您的代码),您可以获取元素硬编码 ID使用查询 ($('#yourButtonId')
) 或不使用 (document.querySelector('#yourButtonId')
) 并改用它。请注意,在此处重新处理点击事件将需要再次传递参数(在您的情况下为'it'?),这就是为什么它被包装在另一个函数中而不是直接调用的原因。
解决方法:我认为这要简单得多,但这取决于您和代码。
var hasSwiped = false;
$scope.click = function(event){
if (!hasSwiped){
...
}
};
$scope.leftSwipe = function(event){
hasSwiped = true;
$timeout(function(){ hasSwiped = false; },1000);
};
这里我们简单地创建一个变量 'hasSwiped' 并将其设置为 true 一旦滑动并仅在 'click' 事件触发后将其重置为 false (这取决于应用程序,但一秒钟听起来在滑动和点击之间对我来说是合理的)。在点击事件中,只要检查这个标志是否被触发。
希望这可以帮助,
祝你好运!