angularJS ngTouch - 无法获得相对坐标

时间:2015-11-28 08:05:04

标签: angularjs angularjs-ng-touch

使用ngClick我可以轻松地从event.offsetX获取相对点击坐标。然而,使用ngTouch似乎没有明显的方法来做到这一点。我已经彻底检查了event.originalEvent.changedTouches []数组,但触摸事件中的所有坐标都是绝对的。

唯一的方法似乎是遍历DOM并获得每个元素相对于其父元素的偏移......确实是一个糟糕的解决方案。我错过了什么吗?哪里可以轻松访问触摸相对于听音元素的x,y坐标?

1 个答案:

答案 0 :(得分: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 ...
}