4

Angular を使用してモバイル Web アプリを構築しています。モバイル デバイスでのクリック イベントを高速化するためにngTouch (angular-touch) モジュールを組み込んでいます。

ngTouchを使用しないアプリは次のとおりです: http://lukasolson.github.io/n-spade-cards/ng-click/

ngTouchを使用したアプリは次のとおりです: http://lukasolson.github.io/n-spade-cards/ng-touch/

iPhone 5 で Safari を使用してテストしています。

ngTouch モジュールがなくても、すべて正常に動作しますが、300 ミリ秒のクリック遅延が発生します。

ただし、ngTouch モジュールを使用すると、画面をタップするたびに、Web アプリは 2 回タップしていると認識し、アプリの機能を台無しにします。

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」はクリックの発生を防ぎ、タッチスタートのみが起動するため、クリックを「複製」しません。

それをテストして、それが役に立つかどうか教えてください。

ところで、ズームを気にしない場合は、次の方法で遅延を回避できます。

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 に答える