• 小程序动态设置scroll-view的高度问题


    众所周知,小程序不能像jQuery一样去操作dom元素来获得元素的高度,给的wx.createSelectorQuery()方法还是一个异步的方法,如果两个套起来的话我做过测试,会一直循环,而我要做的页面是这样的

    header区域和按钮区域都是要动态获取的,因为虽然设置了rpx的高度,但是!!!,当你取出来用屏幕高度去*2再减去这两个区域的高度*2的时候,获得的高度是不对的!不信的同学自己去试试,百分百页面还有滚动条!

    所以要换一种做法,我的页面header是个自定义插件,所以header的高度在自定义组件中获取到,然后发送到父元素,然后再使用wx.createSelectorQuery方法获取到按钮区域的高度,再用屏幕高度一减,获得的高度就对了。代码我给贴一下

    header自定义组件的js

      ready(){
        const query = this.createSelectorQuery()
        query.select('.header').boundingClientRect()
        query.selectViewport().scrollOffset()
        query.exec((res)=>{
          // console.log(res[0].height)
          let a = res[0].height
          this.triggerEvent('getHeader',a)
        })
      },

    页面的wxml

    <header title="库存查询" blcShow="{{true}}" bindgetHeader="getHeaderHeight"></header>
    <scroll-view scroll-y class="scroll" style="height:{{scrollHeight}}px" lower-threshold="{{30}}" bindscrolltolower="nextPage">
     

    页面的js

    getHeaderHeight(e){
        let headerHeight = e.detail
        let a = wx.getSystemInfoSync()
        a = a.windowHeight
        const query = wx.createSelectorQuery()
        query.select('.filter-wrap').boundingClientRect()
        query.selectViewport().scrollOffset()
        query.exec(res=>{
          let b = a - headerHeight - (res[0].height)
          console.log(a,headerHeight,res[0].height,b)
          this.setData({scrollHeight:b})
        })
      },

    设置的scrollHeight就是一个正确的高度

  • 相关阅读:
    python之mysqldb模块安装
    消失的那3个月__怎么看代码的小结
    四年测试经验总结
    python学习笔记系列----(八)python常用的标准库
    业务逻辑中的测试总结(二)----业务与数据库交互需求的测试分解
    python学习笔记系列----(七)类
    【QUESTION】
    python学习笔记系列----(六)错误和异常
    python学习笔记系列----(五)输入和输出
    Android6.0.1 移植:显示系统(一)--测试framebuffer
  • 原文地址:https://www.cnblogs.com/dayin1/p/13188267.html
Copyright © 2020-2023  润新知