angularJS ngTouch - 无法获取相对坐标
angularJS ngTouch - can't get relative coordinates
使用 ngClick 我可以轻松地从 event.offsetX 获取相对点击坐标。但是使用 ngTouch 似乎没有明显的方法可以做到这一点。我已经彻底检查了 event.originalEvent.changedTouches[] 数组,但我的触摸事件中的所有坐标都是绝对的。
唯一的方法似乎是遍历 DOM 并获取每个元素相对于其父元素的偏移量……确实是一个糟糕的解决方案。我错过了什么吗?在哪里可以轻松访问触摸相对于监听元素的 x,y 坐标?
我最终使用 jQuery 破解了一个解决方案 - 我发现偶尔需要一些东西,即使在试图避免它并全力以赴 angular 时也是如此。由于未提供相对坐标,因此您必须计算出被单击的目标元素的视口偏移量。
也许 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 ...
}
使用 ngClick 我可以轻松地从 event.offsetX 获取相对点击坐标。但是使用 ngTouch 似乎没有明显的方法可以做到这一点。我已经彻底检查了 event.originalEvent.changedTouches[] 数组,但我的触摸事件中的所有坐标都是绝对的。
唯一的方法似乎是遍历 DOM 并获取每个元素相对于其父元素的偏移量……确实是一个糟糕的解决方案。我错过了什么吗?在哪里可以轻松访问触摸相对于监听元素的 x,y 坐标?
我最终使用 jQuery 破解了一个解决方案 - 我发现偶尔需要一些东西,即使在试图避免它并全力以赴 angular 时也是如此。由于未提供相对坐标,因此您必须计算出被单击的目标元素的视口偏移量。
也许 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 ...
}