• 小程序踩过的坑-合集


    1、关于图片的 mode='widthFix',小程序的api说这个可以只设置图片的宽度,高度会自适应。

    然而发现确实可以,但是图片自带了height:40px;这个属性的执行会比css里面图片自带的height执行慢,能看到一个尴尬的过渡效果。

    解决方案:图片设置宽度的时候,加上max-height就好了

     2、关于时间戳的问题,后台如果返回了2018-11-14 17:51这样的格式到前台,前台转成了时间戳(13位),在开发者工具里面不会报错,在安卓上也不会报错,

    但是在ios就会报错,不能转成时间戳,会是NAN

    解决方案:后台直接返回13位的时间戳

    3、两次点击操作间隔太快。

    解决方案:定义一个变量为0,用当前的时间和变量对比小于1000就停掉。

    data:{tapTime:'',canShow:0}
    xxx:function(){
      if(this.data.canShow){
        var nowTime = new Date();
        if(nowTime - this.data.tapTime < 1000){
          return;
        }
        this.setData({
          tapTime:nowTime;
        })
      }
    }
    4、判断两个json数组是否相同
    解决方案:json1.sort().toString() === json2.sort().toString()
     
    5、页面超过一屏,显示返回顶部按钮,没有view-scroll
    解决方案:
    页面.wxml
    <view id="container" bindtouchmove="handletouchmove">
      内容
    </view>
    <view class='gotop' wx:if="{{showGoTop}}" bindtap='backToTop'>
      <image src='/images/goTop.png'></image>
    </view>
    页面.js
    data:{
     showGoTop:false 
    }
    handletouchmove: function () {
      app.queryMultipleNodes(this);
    },

    backToTop: function () {
     app.backToTop(this)
    },
    总的app.js
     
    //获取屏幕滚动出去的高度
    queryMultipleNodes: function (self) {
      var self = self;
      var query = wx.createSelectorQuery()
      query.select('#container').boundingClientRect()
      query.selectViewport().scrollOffset()
      query.exec(function (res) {
        res[0].top // 节点的上边界坐标
        //如果顶部的距离超过300 就显示GoTop按钮
        if (res[0].top < -300) {
          self.setData({
          showGoTop: true
          })
      }
      else {
        self.setData({
        showGoTop: false
        })
      }
      })
      },
    //返回顶部
    backToTop: function (self) {
      wx.pageScrollTo({
      scrollTop: 0,
      duration: 400
     });
    self.setData({
     showGoTop: false
      })
    },
     6、商品列表的懒加载
    解决方案:第一屏直接显示(先用一张默认图,设计setTimeout再去加载真正的图片),之后的列表根据距离顶部的距离判断继续加载
    app.js:
    onLaunch: function (options) {
      // 获取系统信息
      var that = this;
      wx.getSystemInfo({
        success: function (res) {
          that.globalData.windowHeight = res.windowHeight;
          that.globalData.windowWidth = res.windowWidth;
        },
      })
    },
    globalData: {
      windowWidth:0,
      windowHeight:0
    }
    当前js:
    data:{
      arr:[],
      arrHeight:[],
      itemHeight:0,
      imageDefault:'/images/goods.png'
    },
    onLoad: function (options) {
      this.GoodsList();
    },
    GoodsList: function (){
      let that = this;
      util.axios_notoken(api.GoodsList, { 请求参数}).then(function (res) {
      if (res.code == 200) {
      //请求之后赋值操作省略
      for (var i = 0; i < res.data.list.length; i++) {
      that.data.arr.push(false);
      }
      // 图片加载,延迟1秒执行获取单个图片高度
      setTimeout(function () {
        that.getRect();
      }, 600)
      }
      })
    },
    getRect:function(){
      let that = this;
      // 获取图片节点的高度
      wx.createSelectorQuery().select('.item').boundingClientRect(function(rect){
      that.setData({
        itemHeight:rect.height
      })
      that.init(rect.height)
      }).exec()
    },
    init: function (itemHeight){
      // 获取打开页面未滚动时整屏显示的行数,这屏的图片先加载
      let index = parseFloat(app.globalData.windowHeight/itemHeight);
      for(let i = 0;i<index;i++){
        this.data.arr[i] = true;
      }
      this.setData({
        arr:this.data.arr
      })
      // 遍历获取每个图片相对于顶部的高度值
      for(let i = 0;i<this.data.arr.length;i++){
        this.data.arrHeight[i] = Math.floor(i/2)*(itemHeight+10)
      }
    },
    onPageScroll:function(e){
      for(var i = 0;i<this.data.arrHeight.length;i++){
      if(this.data.arrHeight[i]<e.scrollTop + app.globalData.windowHeight + 200){
        if(this.data.arr[i]===false){
          this.data.arr[i] = true
          }
        }
      }
      this.setData({
        arr:this.data.arr
      })
    },

     html:

    <navigator hover-class="none" wx:key="id" wx:for="{{goodList}}" url='' class='item px-15 bgfff'>
      <image class='mr-15 pull-left good-pic' src='{{arr[index]?item.img:imageDefault}}'></image>
    </navigator>

     

     

    与尘埃中开出花朵。
  • 相关阅读:
    函数对象与闭包
    20.03.19作业
    关键字参数,名称空间和作用域
    作业03.18
    函数第二天
    20.03.17作业
    文件
    20.01.16作业
    前端基础
    前端知识(二)
  • 原文地址:https://www.cnblogs.com/congfeicong/p/9959318.html
Copyright © 2020-2023  润新知