简单实现个vue的下拉加载

Posted 前端e站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单实现个vue的下拉加载相关的知识,希望对你有一定的参考价值。

1代码文本片段

  v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-distance="10"

一些参数的解释 , 有助于代码的理解

 

<div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" infinite-scroll-        
    distance="10">
    <table class="bordeoBm pt15 pb15" v-for="(item, index) in editionData" :key="index">
        <tr>
            <th class="width60 pl15 borM" align="left" valign="top">item.number</th>
            <div class="pl15 padd" v-for = "(list,index) in item.content.length"                 
                 :key="index">item.content[list]
            </div>
        </tr>
    </table>
    <div class="loading tac" v-if="busy">加载中…</div>
    <div class="loading tac" v-if="endMore">没有更多了</div>
</div>

2主要方法实现

  methods: 
    /* 加载方法 */
    loadMore () 
      let self = this
      self.busy = true
      self.endMore = false
      if (self.totalPage === self.page) 
        self.busy = false
        if (self.totalPage !== 1) 
          self.endMore = true
        
        return false
      
      self.page += 1
      setTimeout(() => 
        self.editionList()
      , 1000)
    ,
    /* 对应的接口调试方法 */
    editionList (cb) 
      let self = this
      edition.editionList(function (response, page ,size) 
        if (response) 

          /* data是array类型 */

          self.editionData = response.data.data
          let res = response.data
          self.editionData = self.editionData.concat(res.data)
          self.totalPage = Math.ceil(res.total / self.size)
          self.busy = false

          /* data非array类型,需要先转化成array类型 */

          /* let res = JSON.parse(response.data)
          self.list = self.list.concat(res.data)
          self.totalPage = Math.ceil(res.total / self.size)
          self.busy = false */
        
      , self.page, self.size)
    
  

3.data里默认的一些参数设置

      editionData: [],
      busy: false,
      totalPage: false,
      endMore: false,
      page: 0,
      size: 12

4.最后再给一点样式吧

.borMborder-bottom:1px solid #328DFE;
table.bordeoBmborder-bottom:1px solid #E3E3E3;width:100%;
/* div.pl15.paddmargin-left: 85px; */
div.pl15.padd:first-childpadding-top: 15px;
div.pl15.padd:last-childpadding-bottom: 40px;
table.bordeoBmmargin:40px 0;font-size: 14px;line-height:20px;

这样一个简单的下拉加载基本就实现了。

以上是关于简单实现个vue的下拉加载的主要内容,如果未能解决你的问题,请参考以下文章

最详细的vue+vant的上拉加载,下拉刷新

关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法

vue-infinite-loading的下拉加载更多等多个场景的使用

Element下拉框实现滚动加载更多功能实现

vue中好用的下拉刷新、上拉加载插件mescroll.js

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件