zoukankan      html  css  js  c++  java
  • 小程序踩过的坑-合集

    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>

     

     

    与尘埃中开出花朵。
  • 相关阅读:
    Codeforces Beta Round #92 (Div. 2 Only) B. Permutations 模拟
    POJ 3281 Dining 最大流 Dinic算法
    POJ 2441 Arrange the BUlls 状压DP
    URAL 1152 Faise Mirrors 状压DP 简单题
    URAL 1039 Anniversary Party 树形DP 水题
    URAL 1018 Binary Apple Tree 树形DP 好题 经典
    pytorch中的forward前向传播机制
    .data()与.detach()的区别
    Argparse模块
    pytorch代码调试工具
  • 原文地址:https://www.cnblogs.com/congfeicong/p/9959318.html
Copyright © 2011-2022 走看看