使用 ngClick 我可以轻松地从 event.offsetX 获取相对点击坐标。但是使用 ngTouch 似乎没有明显的方法可以做到这一点。我已经彻底检查了 event.originalEvent.changedTouches[] 数组,但我的触摸事件中的所有坐标都是绝对的。
唯一的方法似乎是遍历 DOM 并获取每个元素相对于其父元素的偏移量……确实是一个糟糕的解决方案。我错过了什么吗?触摸相对于聆听元素的 x,y 坐标在哪里可以轻松访问?
使用 ngClick 我可以轻松地从 event.offsetX 获取相对点击坐标。但是使用 ngTouch 似乎没有明显的方法可以做到这一点。我已经彻底检查了 event.originalEvent.changedTouches[] 数组,但我的触摸事件中的所有坐标都是绝对的。
唯一的方法似乎是遍历 DOM 并获取每个元素相对于其父元素的偏移量……确实是一个糟糕的解决方案。我错过了什么吗?触摸相对于聆听元素的 x,y 坐标在哪里可以轻松访问?
我最终使用 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 ...
}