需求:
微信小程序区域滚动,头部是标题、日期切换、下面是表头,可滚动的只有列表表体的内容;通过scroll-view组件实现表体内容的区域滚动。
思路:
- 列表页主要有标题、日期时间切换、列表表头在滚动的时候是不能动的,只有表体的数据内容可以区域滚动。表体的内容写在
<scroll-view></scroll-view>
组件里。 - 在列表页还可以切换到图表页;图表页的头部和列表共用,相当于筛选条件是一样的。图表需要滚动的也要放到
<scroll-view></scroll-view>
组件里。
问题:
- 列表页的区域滚动到最下方数据有遮挡;及图表的区域滚动最下方是有遮挡且图表不能正常上下滚动。
- 第一次小程序加载进来的时候,列表和图表滚动到最下面不会有遮挡,当从筛选条件页或者从详情页回来的时候,就会出现遮挡,获取的屏幕高度比首次高,导致计算的可滚动区域也变大,最下面的数据显示不全被tabBar遮挡。
解决方案:
- 将计算滚动高度的方法放在onReady生命周期中调用,然后给data中的变量进行赋值,这样当从详情页或者是筛选页返回的时候,只会执行onShow里的方法,使用的还是首次页面加载时获取的滚动高度。
- 图表滚动的时候,小程序中的 Echarts是用canvas渲染的,
<ec-canvas>
默认自带的有手指触摸的事件,就和scroll-view的滑动事件冲突了。
当canvas绑定了滑动事件之后,当手指在这块区域上下滑动的时候,有时候整个滑动事件都被canvas捕获,页面获取不到滑动事件,就会导致整个界面类似卡死状态,这时候只能滑动canvas之外的界面才能触发界面上下滑动。
在这里我将canvas的事件删除,就解决了冲突。由于我们暂时没有触摸的需求(不建议这么做,因为无法触摸图表,导致无法选中图表去显示一些提示的详情信息)
代码:
list.wxml
<view class="tableList">
<view class="listHead">
<view>排名</view>
<view>影片名</view>
<view wx:for='{
{ selectList }}' wx:key="index">{
{ item.nameC }}</view>
</view>