Dal ngTouch ngClick documentation:ngTouch ngClick non lo fa bolla
Un più potente sostituto per il default ngClick progettato per essere utilizzato su dispositivi touchscreen. La maggior parte dei browser mobili attendono circa 300ms dopo un tap-and-release prima di inviare l'evento click. Questa versione le gestisce immediatamente e quindi impedisce la propagazione del seguente evento click.
Questo crea un comportamento incoerente in quello su un computer, l'evento click continua a diffondersi/propagarsi, ma su cellulare, si interrompe. Ciò significa che tutte le direttive più elevate nella dom che ascoltano i clic dell'elemento non funzionano. Sembra un bug per me, ma non devo essere la prima persona a dover lavorare su questo.
Se si guarda alla ngTouch code, the problem stems from line 453
element.triggerHandler('click', [event]);
angular.element
delegati al di angolare integrato sottoinsieme di jQuery, chiamato "jQuery lite" o "jqLite."
jqLite ha accesso a jQuery di triggerHandler
, ma non trigger
.
Il .triggerHandler() il metodo si comporta in modo simile a .trigger(), con le seguenti eccezioni:
- Eventi attivati con .triggerHandler() non bolla il DOM gerarchia; se non sono gestiti direttamente dall'elemento bersaglio, non fanno nulla.
Così la gente angolare bisogno di aggiungere trigger
sostegno ai jqLite e cambiare quella linea ad trigger
per farlo funzionare correttamente.
Nel frattempo, come posso aggirare questo? C'è un modo per usare ngClick all'interno di una direttiva personalizzata?
Bonus per ride: Comment from the ngTouch source code
// This is an ugly, terrible hack!
// Yeah, tell me about it.