>>分享Web前端开发技术,并对孙卫琴的《精通Vue.js:Web前端开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23833 个阅读者 刷新本主题
 * 贴子主题:  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开发-->数据库事务的概念和声明
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->Vue指令
  前端Vue单页面应用性能优化
  前端面试官指导前端面试攻略
  Axios拦截器的用法
  animate.css动画样式类型库的用法
  vue中监听object数据变化的基本原理
  vue实现Word或Excel文档导出的功能,转换文件名乱码或者json...
  Vue项目的性能优化之路
  css 实现不定数量的tab切换和页面切换
  JavaScript中的HTML DOM Button 对象
  HTML DOM Script 对象
  CSS3 文本效果
  CSS 属性选择器
  JavaScript的 while 循环语句
  JavaScript中的for 循环
  Android 广播接收器(Broadcast Receivers)
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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