2015-11-28 2 views
0

using ngClick Я легко могу получить относительные координаты кликов от event.offsetX. однако, используя ngTouch, похоже, нет очевидного способа сделать это. Я тщательно проверил массив event.originalEvent.changedTouches [], но все координаты в моем событии касания являются абсолютными.angularJS ngTouch - не может получить относительные координаты

Единственный способ, по-видимому, пересекать DOM и получать смещение каждого элемента относительно его родителя ... действительно, ужасное решение. я что-то упускаю? где легко получить доступ к координатам x, y касания относительно элемента прослушивания?

ответ

1

Я закончил с помощью jQuery, чтобы взломать решение - что-то, что я нашел изредка, даже когда пытаюсь избежать его и идти все угловые. поскольку относительные координаты не предусмотрены, вам нужно выяснить смещение видового экрана для выбранного целевого элемента.

Возможно, ngTouch так молод, что авторы не подумали добавить это по умолчанию, но для меня это похоже на недосмотр.

Я должен заметить, что я также обнаружил, что, по-видимому, является ошибкой ngTouch, где, если вы нажимаете только элемент ng-click, но достаточно близко, чтобы касание перекрывалось с элементом, оно срабатывает с помощью MouseEvent, тогда как если вы коснетесь внутри элемента он использует TouchEvent. получение параметра offsetX отличается для каждого из этих событий, как показано ниже.

scope.click = function(event) 
{ 
    var offsetX = null; 
    if(event.originalEvent.changedTouches) 
    { 
     offsetX = event.originalEvent.changedTouches[0].clientX - $(event.currentTarget).offset().left; 
    } 
    else 
    { 
     offsetX = event.offsetX; 
    } 

    ... do stuff with offsetX ... 
} 
Смежные вопросы