javascript angularjs javascript-events touch

javascript - ngSwipe y desplazamiento horizontal



angularjs javascript-events (1)

Creo que es un problema de concurrencia con estos eventos. Podría funcionar mejor si su evento principal no depende del evento secundario. Para lograr eso:

//add a identifier to your list element <ul class="myList" your-other-attrs></ul> //should proceed can rely on the target element to find out //if the target element belongs (or is) in your list. var shouldActionProceed = function($event) { return !$($event.target).hasClass("myList") && //is myList? $($event.target).parents(".myList").length == 0; //has parent ''myList''? };

De esta manera, el evento padre puede funcionar en su encendido.

Tengo problemas al combinar ng-swipe y desplazamiento horizontal en el móvil. El caso de uso es que tengo una página que al deslizar debe cargarse el siguiente o el anterior y dentro hay módulos que muestran mucha información. Algunos de ellos se desplaza.

Entonces, tan pronto como se desplaza el golpe en el padre, se activa y se navega. Así que puse otro par de ng-swipe en el elemento principal del elemento desplazable con este tipo de trucos:

self.onInnerSwipe = function($event) { $event.originalEvent.preventAction = true; };

Y luego en el padre:

var shouldActionProceed = function($event) { return !$event || !$event.originalEvent || !$event.originalEvent.preventAction; }; self.goToPrev = function($event) { if (shouldActionProceed($event)){ // Do Magic } }

Esto hace el truco de la manera en que la acción no avanza si estoy deslizando sobre ese elemento pero el desplazamiento no funciona realmente. Tipo de pero no lo hace. Comienza un poco y luego se detiene.

En Chrome hay algunas advertencias que se registran a veces .

El intento ignorado de cancelar un evento de movimiento táctil con cancelable = falso, por ejemplo, porque el desplazamiento está en curso y no se puede interrumpir.

He preparado una demostración aquí: http://jsbin.com/webologavu/2/ que es demasiado simplista pero puedes reproducir el problema.

¿Alguna pista?