Echarts影响scroll-view滚动、监听页面滚动、view监听滚动

之前写过一个商品详情页,要求用Echarts展示商品价格趋势,最开始我用的是scroll-view,但是发现在scroll-view滚动的时候Echarts不会跟随scroll-view滚动,而是自行滚动,是分离开的。
<!-- 导航栏组件 -->
<NavigationBar background='#FF7A31' isShowBack='{{true}}'></NavigationBar>
<!-- 滚动部分 -->
<scroll-view class="goods_page" scroll-y="false" scroll-with-animation="true">
    ...
    <view class="chart_info" hover-class="none" hover-stop-propagation="false">
    <!-- 图表公共组件 -->
        <PriceChart goodsUrl='{{goodsUrl}}' isVideo='{{false}}' bind:closePriceHistory='closePriceHistory'></PriceChart>
    </view>
    ...
</scroll-view>
后来发现,Echarts就是canvas原生组件,不建议用scroll-view包裹原生组件,但是又要滚动,所以就把scroll-view换成了view,不设置高,也是可以滚动的
<!-- 导航栏组件 -->
<NavigationBar background='#FF7A31' isShowBack='{{true}}'></NavigationBar>
<!-- 滚动部分 -->
<view class="goods_page" scroll-y="false" scroll-with-animation="true">
    ...
    <view class="chart_info" hover-class="none" hover-stop-propagation="false">
    <!-- 图表公共组件 -->
        <PriceChart goodsUrl='{{goodsUrl}}' isVideo='{{false}}' bind:closePriceHistory='closePriceHistory'></PriceChart>
    </view>
    ...
</view>

但是后来又发现,echarts的层级过高,滚动的时候,会遮盖住导航栏部分,很不友好。原生组件是不支持z-index的,所以设置多少都没有用,差了很多资料,据说把canvas的bindtouchstart和bindtouchend、bindtouchmove给去掉也是可行的

canvas

但我这个echarts要求能拖动标点,业务不支持。

所以我就想着在滚动到一定的高度时,把echarts隐藏掉

先获取echarts以上元素的高度

    //获取元素高度
   let query =  wx.createSelectorQuery();
   let that=this;
   query.select('.goods_detail').boundingClientRect(res=>{
        that.setData({hiddenChart:res.height})
   }).exec();

然后最迷惑的事儿就是view并没有监听滚动的方法呀,怎么才能获取滚动的高度呢?
一顿走亲访友式询问,才知道还有个监听页面滚动的方法:onPageScroll

//监听页面滚动
onPageScroll(e){
    console.log(e.scrollTop)
    this.setData({scrollTop:e.scrollTop})
},

这样就获取到了滚动高度和echarts以上元素的高度

最后给价格图表加上限制条件就好了

<!--隐藏图表的条件-->
<PriceChart
    goodsUrl='{{goodsUrl}}'
    isVideo='{{false}}'
    bind:closePriceHistory='closePriceHistory'
    hidden="{{scrollTop>hiddenChart}}"
></PriceChart> 
现在滚动到echarts的时候就把他隐藏了,虽然样式不是很好看,但是基本的问题解决了,就酱。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容