按钮在点击或左击时在触摸屏上完美运行:
<button ng-click="click(it)" ng-swipe-left="leftSwipe(it)" />
但是,在通过鼠标单击和左键拖动完成左键滑动的桌面上,也会触发click事件。
有什么方法可以抑制这个吗?
答案 0 :(得分:2)
嗯我没有找到任何简单的东西,所以这里有一个解决方法和一个半抑制,都依赖于$ timeout,但是如果你依赖人工互动,我认为我们还可以。
半抑制 :我们希望忽略点击此摘要周期并返回以收听下一个摘要周期的事件。
$scope.leftSwipe = function(event){
angular.element(event.target).unbind('click');
$timeout(function(){angular.element(event.target)
.bind('click', function(it) {$scope.click(it);})},0);
};
在这里,我们将事件传递给了“左键滑动”&#39;函数以获取目标元素,如果您不想将事件作为参数传递(取决于您的代码),您可以使用查询($('#yourButtonId')
)或不使用{{1}来获取元素硬编码的ID })并使用它代替。请注意,在此处重新处理点击事件将需要再次传递参数(在您的情况下&#39; it &#39;?),这就是为什么它被包装在另一个函数中而不是被调用直接点。
解决方法 :我认为这要简单得多,但这取决于您和代码。
document.querySelector('#yourButtonId')
在这里,我们只需创建一个变量“hasSwiped”&#39;并且只有在点击&#39;之后将其设置为true并将其重置为false。事件已经解雇(这取决于应用程序,但是在刷卡和点击之间,一秒钟对我来说听起来很合理)。在点击事件中,如果被提升,请检查此标志 希望这可以帮助, 祝你好运!