用vue-scroller做上拉刷新,下拉加載的模板(簡單明了,通用)


1.首先下插件,並在你的vue項目中引人

 

1   npm i vue-scroller -D
2   import VueScroller from 'vue-scroller

 

 

2.Vue.use(VueScroller )(這一步別忘啦)

 

3.在你需要做上拉刷新,下拉加載的地方加上<scroller></scroller>標簽(附上我的代碼,這個自行替換,一般都是做列表的時候加)

 

1   <scroller :on-refresh="refresh" :on-infinite="infinite" ref="myscroller">
2    <ul>
3     <li v-for="(item,i) in arr"  :key="i">
4     </li>
5    </ul>
6   </scroller>
 
 
4.接下來就是最重要的邏輯代碼了
 
    (1)在data里面我定義了4個參數(這里是做上拉刷新下拉加載需要用到的參數)
   
1 data() {
2             return {
3                 noDate:false,//這是一個判斷是否加載的開關
4                 arr:[],
5                 page:1,
6                 pageSize:10
7             }
8         }
           
 
   (2)methods里面定義三個方法
 
  
 1  methods:{
 2    // 獲取數據
 3     getData(){
 4          var that=this;
 5          axios.get('/api/article/findArticleList',{params:{pageNum:that.page,pageSize:that.pageSize}})
 6      .then(function(data){
 7                          if(data.data.success){
 8           //這一步是判斷你當前請求的這一頁數據是不是最后一頁,如果是最后一頁就不能請求了(這個根據后端給的接口判斷,只要能判斷出就行了,如果是最后一頁給that.noDate=true)
 9                                that.noDate=data.data.data.isLastPage;
10                                // 判斷是下拉刷新還是上拉加載(這一步也是比較巧妙的,當然也很好理解)
11                                if(that.page==1){
12                                      that.arr=data.data.data.list;
13                              }else{
14                                       that.arr=that.arr.concat(data.data.data.list)
15                               }
16                           }
17                      })
18            },
19         // 下拉刷新
20       refresh(){
21          this.page=1;//重置頁數刷新每次頁數都是第一頁
22          this.noDate=false;//重置數據判斷
23          setTimeout(function(){
24              this.getData();
25              this.$refs.myscroller.finishPullToRefresh();//刷新完畢關閉刷新的轉圈圈
26          }.bind(this),1700)
27      },
28   // 上拉加載
29    infinite(done){
30        if(this.noDate){
31               this.$refs.myscroller.finishInfinite(true);//這個方法是不讓它加載了,顯示“沒有更多數據”,要不然會一直轉圈圈
32       }else{
33            setTimeout(() => {
34                  this.page++;//下拉一次頁數+1
35                  this.getData();
36                  done();//進行下一次加載操作
37            }, 1500);
38      }
39    },
40 }

 

5.因為剛開始要有數據,最后在mounted里面調用一下this.getData();就ok了!!!
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM