Vue+Vant中van-list请求数据(数据请求调用公用方法

2020-11-23  本文已影响0人  後弦月的雨
数据请求写在当前页面上,不用公用方法点击这里:https://www.jianshu.com/p/b470a81f1014

1、编写van-list公用方法

我是放在components中,新建common.js文件用来存放公用方法校验等,单独定义communalApi存放公用方法


image.png

备注:getList是公用van-list方法名称

    getList(options, callback) {
      var vanListLoading = false // 加载状态
      var finished = false // 是否加载
      var finishedText = '' // 加载完成后的提示文案
      axios.post(options.url, options.db).then(
        res => {
          if (res.data.code === 1) {
            vanListLoading = false
            if (res.data.data.length > 0) {
              options.list = options.list.concat(res.data.data) // 追加数据
              finished = false
            }
            // 如果当前页数 = 总页数,则已经没有数据
            if (options.db.pages === Math.ceil(res.data.count / options.db.pnums)) {
              finished = true
              finishedText = '- 已显示全部 -'
            }
            callback({ list: options.list, vanListLoading: vanListLoading, finished: finished, finishedText: finishedText })
          } else {
            finished = true
            finishedText = '- 已显示全部 -'
            callback({ list: options.list, vanListLoading: vanListLoading, finished: finished, finishedText: finishedText })
          }
        },
        err => { console.log(err) }
      )
    }

html+js

<template>
  <div>
    <van-list v-model="vanListLoading" :finished="finished" :finished-text="finishedText" @load="getList">
      <li v-for="(item,index) of list" :key="index">
        {{ index }}{{ item.name }}
      </li>
    </van-list>
  </div>
</template>
<script>
import { nameList } from '../../../api/api'
export default {
  data() {
    return {
      list: [],
      vanListLoading: false, // 加载状态
      finished: false, // 是否加载
      finishedText: '', // 加载完成后的提示文案
      pages: 0, // 页数
      pnums: 10 // 条数
    }
  },
  methods: {
    getList: function() {
      this.pages += 1 // 页数+1
      const db = {
        pages: this.pages,
        pnums: this.pnums
      }
      this.finishedText = ''
      this.common.communalApi.getList({ url: nameList , db: db, list: this.list }, this.getData)
    },
    getData(data) {//回调函数赋值
      this.$set(this, 'list', data.list)
      this.$set(this, 'vanListLoading', data.vanListLoading)
      this.$set(this, 'finished', data.finished)
      this.$set(this, 'finishedText', data.finishedText)
    }
  }
}
</script>
<style scoped lang="less">
</style>
上一篇 下一篇

猜你喜欢

热点阅读