От ngTouch ngClick documentation:ngTouch ngClick не пузырь
Более мощная замена по умолчанию ngClick предназначен для использования на устройствах с сенсорными экранами. Большинство мобильных браузеров ждут около 300 мс после нажатия и выпуска, прежде чем отправлять событие click. Эта версия обрабатывает их немедленно, а затем предотвращает распространение следующего события click.
Это создает непоследовательное поведение в том, что на компьютере событие click продолжает пузыриться/распространяться, но на мобильном устройстве оно останавливается. Это означает, что любые директивы, более высокие в dom, которые прослушивают клики элементов, терпят неудачу. Кажется, это ошибка для меня, но я не должен быть первым, кто должен обойти это.
Если вы посмотрите на ngTouch code, the problem stems from line 453
element.triggerHandler('click', [event]);
angular.element
делегаты Угловой встроенный в подмножестве JQuery, которая называется "JQuery облегченным" или "jqLite."
jqLite имеет доступ к JQuery-х triggerHandler
, но не trigger
.
.triggerHandler() метод ведет себя аналогично .trigger(), со следующими исключениями:
- События запускаемых с .triggerHandler() не пузыриться DOM- иерархия; если они не обрабатываются целевым элементом напрямую, они ничего не делают.
Так Угловые людям должны добавить поддержку trigger
в jqLite и изменить эту строку в trigger
для того, чтобы работать должным образом.
В то же время, как я могу обойти это? Есть ли способ использовать ngClick внутри пользовательской директивы?
Bonus для смеха: Comment from the ngTouch source code
// This is an ugly, terrible hack!
// Yeah, tell me about it.