vue載入更多
//很low的載入更多,僅供自己參考,如若有更好的歡迎提出
1、載入更多在很多評論、列表中有廣泛應用,思路就是每頁10條的話,滾到底部後觸發一個事件,在mounted中寫上事件
window.addEventListener('scroll', this.handleScroll),其中this.handleScroll指的是methods中的一個方法,
2、有了滾到底部的方法後,就需要搞清楚如何實現分頁或者說是載入跟多,後臺是這樣的,如果有32條資料,每頁十條則有四頁,當你傳參為1時,返回前十條,2時返回11~20條,以此類推,有點思路就是要動態改變傳參,換過來想就是滾到底部時讓一個引數++的方式動態改變傳的引數。
3、此時需要注意兩個問題,到底是合併兩個陣列還是等號賦值陣列,問題情境(1)當資料庫一共有八條資料, 但是已經到底部,假設list是你定義的空陣列,而data是返回的陣列。資料不到十條,你用list = data完全沒有問題,而要是資料較多,當傳參變化時你用等號,當前的list永遠就等於後臺返回的,而後臺返回的資料總是一部分一部分的。(2)如果你用陣列的concat()方法,那麼當資料大於十條時完全沒有問題,而小於十條時就出現前八條 16 24這種樣子,因為總是返回的是這八條資料,又合併bug不斷。理想的方法是分情況用concat
html部分
<div class="moreinfo" v-if="flag">
<span>載入中</span>
<a class="active">
<span class="mui-spinner"></span>
</a>
</div>
<div class="noinfo" v-if="noinfo">已載入全部資料</div>
data部分:
data: {
num: 1,
flag: false,
noinfo: false,
totalPage: '',
temp:false,
},
handleScroll: function() {
var that = this
if($(window).scrollTop() >= $(document).height() - $(window).height()) {
that.temp = false //temp決定了是用 = 還是用cancat
that.flag = true //flag決定是否顯示載入中字樣
that.num ++ //傳入後端的頁數
if(that.totalPage<that.num){ //totalPage是後端返回來的總頁數
//即使沒有發起請求也要有載入的動作
setTimeout(function(){
that.noinfo = true //noinfo 決定是否顯示“已載入全部”
that.flag =false
},500)
that.noinfo =false
return
}else{
that.temp = true
that.jydetail() //後端請求的方法
}
}
},