>>分享Web前端开发技术,并对孙卫琴的《精通Vue.js:Web前端开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 15974 个阅读者 刷新本主题
 * 贴子主题:  Vue+Vant中van-list请求数据(数据请求调用公用方法) 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2021-02-04 07:19:36     消息  查看  搜索  好友  邮件  复制  引用

    
数据请求写在当前页面上,不用公用方法点击这里:https://www.jianshu.com/p/b470a81f1014

1、编写van-list公用方法

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

                        点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

         备注: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>

----------------------------
原文链接:https://www.jianshu.com/p/836fa9112cc4

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2021-02-18 10:11:38 重新编辑]
  Java面向对象编程-->泛型
  JavaWeb开发-->访问数据库(Ⅱ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->非阻塞通信
  精通Spring-->Vue组件开发高级技术
  Vue3开发-->创建综合购物网站应用
  VSCode 开发Vue必备插件
  vue30道面试题
  常用CSS样式属性大全
  Axios拦截器的用法
  JavaScript输出格式化日期和时间
  用Vue-Awesome-Swiper实现旋转叠加轮播效果,平移轮播效果
  SQL NULL 值
  CSS 单位
  CSS 听觉参考手册
  响应式 Web 设计:显示图片
  CSS处理透明/不透明图像
  JavaScript HTML DOM EventListener
  JavaScript 正则表达式
  JavaScript 严格模式(use strict)
  JavaScript 对象 的创建和使用
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。