按ng-swipe-left抑制ng-click操作

时间:2015-05-12 16:02:56

标签: angularjs angularjs-ng-touch

按钮在点击或左击时在触摸屏上完美运行:

  <button ng-click="click(it)" ng-swipe-left="leftSwipe(it)" />

但是,在通过鼠标单击和左键拖动完成左键滑动的桌面上,也会触发click事件。

有什么方法可以抑制这个吗?

1 个答案:

答案 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。事件已经解雇(这取决于应用程序,但是在刷卡和点击之间,一秒钟对我来说听起来很合理)。在点击事件中,如果被提升,请检查此标志 希望这可以帮助, 祝你好运!