2015-12-15 5 views
0

На моем мобильном телефоне, когда я нажимаю/касаюсь элемента, он запускает определенный процесс в области видимости и должен обновлять его, все работает отлично, однако, если я хочу повторить событие сразу, это не работает, используя стандарт .on('click') связующее вещество в jqLite/jQuery.Почему на устройствах задерживаются угловые события?

Существует определенная задержка между ними, когда вы касаетесь контейнеров.

var myApp = angular.module('myApp', ['ngTouch']); 

myApp.controller('myCtrl', function MyCtrl($scope) { 
    $scope.name = 'Superhero'; 
    $scope.counter = 0; 
    $scope.fire = function() { 
     $scope.counter++; 
    }; 
}); 


myApp.directive('directiveA', function() { 
    return { 
     restrict: 'A', 
     link : function(scope, element) { 
     scope.counterB = 0; 
     $(element).on('click', function() { 
      scope.counterB++; 
      scope.$digest(); 
     }); 
    } 
    }; 
}); 

DEMO: http://jsfiddle.net/HB7LU/21162/

В демке, если вы касаетесь на одной стороне красной полосой, а затем с другой стороны, независимо от того, как быстро вы прикоснуться к ней, она обновляет.

Однако на зеленой панели, если вы касаетесь левой стороны, а затем с правой стороны, она не обновляется, когда вы продолжаете касаться.

Красная полоса использует директиву ng-click, а зеленая полоса использует стандартную наклейку для кликов, а затем запускает дайджест из этой области видимости.

Угловой модуль ngTouch является причиной этой задержки. Мне интересно, как я могу перезаписать эту задержку, которая появляется через ngClick, используя ngTouch?

+0

На моем компьютере я не вижу задержки при нажатии на зеленую полосу. Оба работают точно так же. – Vivek

+0

Пожалуйста, посмотрите мой OP, я упомянул, что это связано с устройствами и угловым сенсорным модулем @VVK –

+0

ngTouch заменяет директиву ngClick и ничего не делает * с событием 'click', поэтому существует задержка. – estus

ответ

1

Если вы посмотрите на документацию для ng-click, вы увидите, что между нажатием/выпуском и запуском события клика есть задержка в 300 мс, но событие ng-click не использует клик по умолчанию для запуска обработчика поэтому нет задержки, но когда вы используете инструкцию по подключению click, задержка подходит к изображению.

Более мощная замена стандартного ngClick, рассчитанного на , на устройствах с сенсорным экраном. Большинство мобильных браузеров ждут около 300 мс после нажатия и отпускания перед отправкой события клика. Эта версия обрабатывает их немедленно, а затем предотвращает распространение следующего события события .