使用 @touchmove.stop.prevent="toMoveHandle" 事件修饰符
若需要禁止蒙版下的页面滚动,可使用 @touchmove.stop.prevent="moveHandle",moveHandle 可以用来处理 touchmove 的事件,也可以是一个空函数。将这个方法直接丢到弹窗的最外层 view 就好了,虽然在编译器上的滚轮依旧可以滚动,但真机环境下的手指滑动无法再触发。
为兼容各端,事件需使用 @ 的方式绑定,请勿使用小程序端的 bind 和 catch 进行事件绑定;也不能在 JS 中使用 event.preventDefault() 和 event.stopPropagation() 方法。
注意:如果使用 uview 之类的 ui 框架,@touchmove.stop.prevent 必须放在底层的 view 上面。由于大部分的 ui 框架结构复杂,很容易不生效,建议自己写一个遮罩层再加上这个事件,这样的话就能正常生效了。
<!-- 弹窗 -->
<view class="pop-box" @touchmove.stop.prevent="()=>{}">
</view>
新问题:
弹窗内部的滚动区域也无法滚动???
原因:弹窗内部滚动区域使用的 view 添加的 overflow: auto;
解决方案1:将弹窗内部的滚动区域换成 scroll-view 组件并添加 scroll-y 属性
其他解决方案:模仿 scroll-view 组件改 view ,没空,还是方案1简单,暂时先不研究,待补充