使用 ngTouch 定义触摸事件区域

Define areas for touch events using ngTouch

我正在开发一个 AngularJs 网络应用程序,并且刚刚开始使用 ngTouch 来识别左右滑动,我想用它来打开和关闭我的侧边栏菜单。目前它可以工作并且菜单打开和关闭但是,我将滑动事件绑定到整个包装器,就像这样 <div ng-style="body_style" id="wrapper" ng-swipe-right="showMenu()" ng-swipe-left="hideMenu()"> 这使得整个应用程序成为滑动区域。我希望能够将它设置为应用程序左上象限中的一个区域,如下所示:

这将允许我设置其他滑动区域以获得额外的功能,而不是仅限于一个区域。

我知道我可以制作一个 div 并以定义的宽度和高度将其放置在那里,但是 div 将阻止其他区域的内容,以便当有人去“点击”时他们实际上会点击滑动区域的不可见 div。我知道必须有办法解决这个问题,但我想不出一个。

tldr:如何设置一个区域来捕获不会影响其下方其他元素交互性的滑动事件?

在 angular-touch 的源代码中,它使用了一个名为 bind 的函数。 Bind 接受一个元素,该元素应该被监视以进行滑动并监视它的事件,例如开始。因此,如果您愿意,如果起点位于您设置的某个 x 或 y 坐标之外,您可以更改源以停止执行其余代码。

您可以更改此代码,

pointerTypes = pointerTypes || ['mouse', 'touch'];
element.on(getEvents(pointerTypes, 'start'), function(event) {
     startCoords = getCoordinates(event);
     active = true;
     totalX = 0;
     totalY = 0;
     lastPos = startCoords;
     eventHandlers['start'] && eventHandlers['start'](startCoords, event);
});

像这样:

pointerTypes = pointerTypes || ['mouse', 'touch'];
element.on(getEvents(pointerTypes, 'start'), function(event) {
     startCoords = getCoordinates(event);
     if (startCoords.y <= 400 && startCoords.y >= 100 && startCoords.x <=500) {
         active = true;
         totalX = 0;
         totalY = 0;
         lastPos = startCoords;
         eventHandlers['start'] && eventHandlers['start'](startCoords, event);
     }
});

有点丑陋,但它会起作用。