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了!!!
