我正在使用Angular构建移动网络应用,我正在尝试合并ngTouch(角度触摸)模块,以加快移动设备上的点击事件。
以下是没有 ngTouch的应用:http://lukasolson.github.io/n-spade-cards/ng-click/
以下是带有 ngTouch的应用:http://lukasolson.github.io/n-spade-cards/ng-touch/
我正在使用Safari测试iPhone 5。
没有ngTouch模块,一切正常,但有300毫秒的恼人点击延迟。
但是,使用ngTouch模块,每次点击屏幕时,网络应用程序都认为我正在点击两次,破坏了我的应用程序的功能。
我是否错误地包括ngTouch模块?为什么要点击多个点击事件?
答案 0 :(得分:12)
来源:http://jsfiddle.net/coma/2hWWa/
在iPhone上测试:http://jsfiddle.net/coma/2hWWa/embedded/result/
angular.module('app').directive('myclick', function() {
return function(scope, element, attrs) {
element.bind('touchstart click', function(event) {
event.preventDefault();
event.stopPropagation();
scope.$apply(attrs['myclick']);
});
};
});
现在你可以:
<a myclick="aFunction()">click it!</a>
它不会“复制”点击次数,因为“stopPropagation”会阻止点击发生,只会触发touchstart。
测试一下,让我知道它是否有用。
顺便说一句,如果您不关心缩放,那么您可以通过以下方式避免延迟:
http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away
我用它来为“apps”添加它。
<强>更新强>