首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ngSwipe和水平滚动

ngSwipe和水平滚动
EN

Stack Overflow用户
提问于 2015-06-05 18:21:12
回答 1查看 714关注 0票数 16

我在移动设备上使用ng-swipe和水平滚动时遇到了问题。我的用例是,我有一个页面,在滑动时应该加载下一个或上一个,里面有显示大量信息的模块。其中一些是滚动的。

所以,只要你在父页面上滚动滑动,你就会被导航到。所以我用这种技巧在scrollable元素的父元素上添加了另一对ng-swipe

self.onInnerSwipe = function($event) {
  $event.originalEvent.preventAction = true;
};

然后在父级上:

var shouldActionProceed = function($event) {
  return !$event || !$event.originalEvent || !$event.originalEvent.preventAction;
};

self.goToPrev = function($event) {
  if (shouldActionProceed($event)){
    // Do Magic
  }
}

这样做的方式是,如果我在该元素上滑动,操作就不会继续进行,但滚动并不真正起作用。它有点像,但它不是。它开始了一点,然后就停止了。

在Chrome上,有时会记录以下警告。

忽略了使用cancelable=false取消touchmove事件的尝试,例如,因为滚动正在进行且无法中断。

我在这里准备了一个演示:http://jsbin.com/webologavu/2/,它过于简单,但您可以重现这个问题。

有什么提示吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 07:30:31

我认为这是这些事件的并发问题。如果您的父事件不依赖于子事件,它可能会工作得更好。要实现这一点:

//add a identifier to your list element
<ul class="myList" your-other-attrs></ul>

//should proceed can rely on the target element to find out
//if the target element belongs (or is) in your list.
var shouldActionProceed = function($event) {
    return !$($event.target).hasClass("myList") &&  //is myList?
        $($event.target).parents(".myList").length == 0; //has parent 'myList'?
};

这样,父事件就可以在其上工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30664124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档