4

我正在使用 Angular 构建一个移动 Web 应用程序,并且我正在尝试合并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 模块?为什么会触发多个点击事件?

4

1 回答 1

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

我用来为“应用程序”添加这个。

更新

https://github.com/angular/angular.js/issues/6251

于 2014-02-13T21:40:04.887 回答