vue使用vant组件,van-pull-refresh和van-list分页加载及下拉刷新

<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
    <van-list
      v-model="loading"
      :finished="finished"
      :finished-text="list.length > 0 ? '已经到底了' : ''"
      @load="onLoad"
    >
          <div v-for='item in list'></div>
     </van-list>
</van-pull-refresh>


data () {
    return {
      refreshing: false,
      loading: false,
      finished: false,
      list: [],
      page:1
    }
}  ,
 methods: {
        // 加载
    onLoad () {
      setTimeout(() => {
        if (this.refreshing) {
          this.page = 1
          this.list = []
          this.refreshing = false
        }
        this.getData()
      }, 500)
    },
    // 下拉刷新
    onRefresh () {
      // 清空列表数据
      this.finished = false

      // 重新加载数据
      // 将 loading 设置为 true,表示处于加载状态
      this.loading = true
        
       //如果想下拉时立马清空数据 加载
      this.page = 1
      this.list = []

      this.onLoad()
    },
          // 获取列表
    getData () {
//后台发送请求
      this.$http.list({})
        .then(res => {
          console.log(res)
          if (res.data.status === 'success') {
            let data = res.data.data
            //  分页操作
            if (data.length > 0) {
              data.forEach(curr => {
                this.list.push(curr)
              })
              this.loading = false
              this.page++
            } else {//停止调用接口
              this.finished = true
            }
          } else {
            this.finished = true
            this.loading = false
            this.$toast(res.data.msg)
          }
        })
        .catch(err => {
          this.finished = true
          this.loading = false
          console.log(err)
          this.$toast('您的网络有些拥挤,请稍后再试')
        })
    },
  }

仅供自己学习参考,不喜勿喷

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是使用 van-pull-refreshvan-list 的示例代码: ```vue <template> <van-pull-refresh v-model="refreshing" @refresh="onRefresh"> <van-list :loading="loading" :finished="finished" :error="error" @load="onLoad"> <van-cell v-for="(item, index) in list" :key="index">{{ item }}</van-cell> </van-list> </van-pull-refresh> </template> <script> export default { data() { return { refreshing: false, loading: false, finished: false, error: false, list: [], page: 1, limit: 10 }; }, methods: { onRefresh() { this.refreshing = true; setTimeout(() => { this.page = 1; this.list = ['Item 1', 'Item 2', 'Item 3']; this.finished = false; this.refreshing = false; }, 1000); }, onLoad() { if (this.loading || this.finished) { return; } this.loading = true; setTimeout(() => { if (this.list.length >= 40) { this.finished = true; } else { this.page++; this.list.push(`Item ${this.page * this.limit - 8}`, `Item ${this.page * this.limit - 7}`, `Item ${this.page * this.limit - 6}`, `Item ${this.page * this.limit - 5}`, `Item ${this.page * this.limit - 4}`, `Item ${this.page * this.limit - 3}`, `Item ${this.page * this.limit - 2}`, `Item ${this.page * this.limit - 1}`, `Item ${this.page * this.limit}`); } this.loading = false; }, 1000); } } }; </script> ``` 在这个示例中,我们使用 van-pull-refresh 包裹 van-list,并且监听其 @refresh 事件来触发下拉刷新。同时,van-list 组件中的一些属性(如 loading、finished、error)和事件(如 @load)可以用于控制和监听列表的加载情况。在 onRefresh 和 onLoad 方法中,我们可以根据需要进行数据的请求和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值