• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

小程序Scroll-view上拉滚动刷新数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

小程序Scroll-view上拉滚动刷新数据

因为项目需求,我需要做一个上拉刷新,但是我不是小程序的原生刷新生命周期函数事件

小程序scroll-view,有一个滚到底部触发事件bindscrolltolower加粗样式

把自己需要滚动的内容放在这个scroll-view之间,然后。给scroll-view一个滚动高度
首先先看一下效果图吧

order.wxml页面

  <scroll-view class='scroll' scroll-y="{{true}}" bindscrolltolower="scrolltolower">
          <view class="tabs">
            <block wx:for="{{ tabs }}" wx:key='{{ index }}'>
              <view bind:tap="changeTab" data-index='{{ index }}' class="tab {{ tabindex === index ? 'active' : '' }}">{{ item }}</view>
            </block>
          </view>
          <view style="height: 80rpx"></view>
          <view>
            <block wx:for="{{ goods }}" wx:key="{{ index }}">
              <view class="content">
                <view class="conbg">
                  <view class="con-top">
                    <view class="shopname iconfont icon-right ellipsis">{{ item.shopName }}</view>
                    <view class="good-status" wx:if="{{item.goodStatus==0}}">卖家未发货</view>
                    <view class="good-status" wx:if="{{item.goodStatus==1}}">卖家已发货</view>
                  </view>
                  <view class="goodinfo">
                    <!-- 商品图 -->
                    <image class="goodimg" src="{{ item.goodImg }}" mode="scaleToFill"></image>
                    <!-- 商品信息 -->
                    <view class="good-info">
                      <view class="good-title ellipsis2">{{ item.goodName }}</view>
                      <view class="good-desc ellipsis2">{{ item.goodDesc }}</view>
                      <view class="shop-server">
                        <text wx:for="{{ item.shopServers }}" wx:key="{{ index }}">{{ item }}</text>
                      </view>
                    </view>
                    <view class="good-price">
                      <view class="price">¥ {{ item.goodPrice }}</view>
                      <!-- 购买商品个数 -->
                      <view class="num">x {{ item.goodNum }}</view>
                    </view>
                  </view>
                  <!-- 商品总计 -->
                  <view class="total">
                    <!-- <text>共{{ goodNum }}件商品</text> -->
                    <text>合计: ¥{{ item.goodTotalPrice }}</text>
                  </view>
                  <view class="operate">
                    <view class="check-delivery">查看物流</view>
                    <view>
                      <view class="comfirm-delivery">确认收货</view>
                    </view>

                  </view>
                </view>
              </view>
            </block>
            <block wx:if="{{goods==''}}">
              <view class='goodsmsg'>
                <image class='tab1Img' src="../images/order.png"></image>
                <text>你暂时还没有商品~</text>
                <text class='buyMore'>去逛逛~</text>
              </view>
            </block>
          </view>
          <view class="no-more" wx:if='{{ hasMore}}'>加载中...</view>
          <view class="no-more" wx:else>已经到底了...</view>
        </scroll-view>

order.wxss

.tabs {
  display: flex;
  justify-content: center;
  align-items: center;
  position: fixed;
  width: 100%;
  height: 80rpx;
  top: 0;
  left: 0;
  background: #f2f2f2;
}
.tabs .tab {
  padding: 0 32rpx;
  font-size: 28rpx;
  height: 76rpx;
  line-height: 76rpx;
  color: #666;
  border-bottom: 4rpx solid transparent;
}
.tabs .tab.active {
  border-bottom-color: #e94a01;
  color: #e94a01;
}
.content {
  padding: 20rpx;
  box-sizing: border-box;
}
.content .conbg {
  background-color: #fff;
  box-sizing: border-box;
  border-radius: 20rpx;
  padding: 0 20rpx 20rpx;
}
.con-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 24rpx;
  height: 76rpx;
  line-height: 76rpx;
}
.shopname {
  font-size: 24rpx;
}
.shopname:after {
  color: #666;
  margin-left: 10rpx;
}
.good-status {
  flex-shrink: 0;
  margin-left: 20rpx;
  color: #e94a01;
}
.goodinfo {
  display: flex;
}
.goodinfo .goodimg {
  width: 188rpx;
  height: 188rpx;
  border-radius: 10rpx;
  flex-shrink: 0;
  margin-right: 20rpx;
}
.goodinfo .good-info {
  font-size: 28rpx;
}
.goodinfo .good-info .good-title {
  font-weight: bold;
}
.goodinfo .good-info .good-desc {
  color: #666;
}
.goodinfo .good-info .shop-server {
  display: flex;
  margin-top: 10rpx;
  flex-wrap: wrap;
}
.goodinfo .good-info .shop-server text {
  padding: 6rpx;
  margin-right: 10rpx;
  background-color: rgba(211, 94, 36, 0.2);
  color: #cc602f;
  font-size: 20rpx;
  margin-bottom: 10rpx;
  border-radius: 6rpx;
}
.goodinfo .good-price {
  flex-shrink: 0;
  font-size: 24rpx;
  display: flex;
  flex-direction: column;
}
.goodinfo .good-price .price {
  font-weight: bold;
  font-size: 28rpx;
}
.goodinfo .good-price .num {
  text-align: right;
  font-size: 28rpx;
  color: #666;
}
.total {
  display: flex;
  justify-content: flex-end;
  height: 80rpx;
  line-height: 80rpx;
  margin-top: 30rpx;
  font-size: 28rpx;
  font-weight: bold;
}
.total text {
  margin-left: 20rpx;
}
.operate {
  display: flex;
  justify-content: flex-end;
  font-size: 28rpx;
}
.operate > view {
  height: 60rpx;
  line-height: 60rpx;
  padding: 0 24rpx;
  border: 1px solid #666;
  margin: 0 10rpx;
  border-radius: 30rpx;
}
.operate > view.comfirm-delivery {
  color: #d64904;
  border-color: #d64904;
}
.no-more {
  height: 80rpx;
  line-height: 80rpx;
  text-align: center;
  font-size: 24rpx;
}
.goodsmsg{
  width: 100%;
  height: 300rpx;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
  flex-direction: column;

}

order.js

// pages/home/order/order.js
var tool = require("../../../utils/util.js")
Page({

  /**
   * 页面的初始数据
   */
  data: {
    idx: 0, //默认选中第一项
    hasMore: true,
    indexNum: 0,
    tabs: ['全部', '待付款', '待发货', '已付款', '待评价'], // tab栏标题
    tabindex: 0, // 控制tab栏切换
    msgPage: 1, //分页
    washcar: [{
        id: 0,
        tips: "洗车"
      },
      {
        id: 1,
        tips: "违章查询"
      },
      {
        id: 2,
        tips: "商城订单"
      },
      {
        id: 3,
        tips: "会员"
      },
    ],
    selecttab: [{
        id: 0,
        tips: "处理中"
      },
      {
        id: 1,
        tips: "已成功"
      },
      {
        id: 2,
        tips: "已撤销"
      },
      {
        id: 3,
        tips: "全部"
      },

    ],
 

    goods: [
      {
      shopName: '商铺名称', // 商铺名称
      goodStatus: '卖家已发货', // 商品状态
      goodImg: 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1986179278,1118313821&fm=27&gp=0.jpg', // 商品图片
      goodName: '商品名称商品名称商品名称商品名称商品名称商品名称商品名称商品名称', // 商品名称
      goodDesc: '商品描述商品描述商品描述商品描述商品描述商品描述商品描述商品描述', // 商品描述
      shopServers: ['商铺服务', '商铺服务', '商铺服务'], // 商铺服务
      goodPrice: '111.00', // 商品价格
      goodNum: '2', // 购买的商品数量
      goodTotalPrice: '111.00', // 商品总价格
      status: 0, // 订单的状态, 0表示还未收货, 1表示已收货还未评价, 2表示已经评价
    }, 
    ],
  },
  //点击切换
  tabChange: function(e) {
    var navigitionIndex = e.currentTarget.dataset.index;
    this.setData({
      indexNum: navigitionIndex
    })

  },
  //滑动切换
  changeswpier(e) {
    var cur = e.detail.current;
    this.setData({
      indexNum: cur
    })
  },
  //查询违章选项卡
  checkviolation(e) {
    let that = this;
    let index = e.currentTarget.dataset.index;
    that.setData({
      idx: index,
    })

  },
  changeTab(e) {
    var page = this.data.mgsPage
    const index = e.currentTarget.dataset.index
    this.setData({
      tabindex: index
    })
    tool.post('/order_list', {
        status: index - 1,
        page: page
      })
      .then((res) => {
        var goods = this.data.goods
        this.setData({
          goods: res.data.goods
        })
      })

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    var id = options.id;
    this.setData({
      indexNum: id
    })
    var page = this.data.mgsPage
    tool.post('/order_list', {
        page: page
      })
      .then((res) => {
        var goods = this.data.goods
        this.setData({
          goods: res.data.goods
        })
      })
  },
  //下拉刷新数据
  scrolltolower() {
    if (this.lock) {
      wx.showToast({
        title: '已经到底了!',
        icon: 'none'
      })
      return
    }
    this.data.msgPage++
      wx.showLoading({
        title: '正在加载中...',
      })
    tool.post('/order_list', {
        page: this.data.msgPage
      })
      .then((res) => {
        var goodsList = this.data.goods;
        const newGoods = res.data.goods
        if (newGoods.length <= 0) {
          this.lock = true
          wx.hideLoading()
          wx.showToast({
            title: '已经到底了!',
            icon: 'none'
          })
          this.setData({
            hasMore: false
          })
          return
        }
        wx.hideLoading()
        goodsList = [...goodsList, ...newGoods]    //取数组里的每一个值,然后再赋值到一个新数组里
        this.setData({
          goods: goodsList
        })
      })
  },
})

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【微信小程序云开发】对demo的数据库+云函数理解发布时间:2022-07-18
下一篇:
微信小程序学习(11) —— 列表渲染发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap