前言
上一篇寫前台解決分頁問題的時候沒有這個問題,但是在實際項目后台中有遇到過,所以在這里專門說一下,如果參考前台分頁出現這種問題了,也可以使用這種方法!
bug:vue和element實現的后台分頁,當前是第二頁,點擊搜索,強制設置current-page為1,但是當前頁還是第二頁沒有改變。
解決方法
如何使用分頁就不說了,可以參考上一篇的前台解決分頁
頁面 el-pagination v-if="pageshow"
<div class="pagination-container">
<el-pagination v-if="pageshow" background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="listQue ry.page" :page-size="listQuery.rows" layout="total, sizes, prev, pager, next, jumper" :total="total">
</el-pagination>
</div>
操作
這里element的分頁有個bug,就是在搜索過后的當前頁數據變化了,原本的分頁當前頁並不會改變,這就會遇見一個問題,首次展示停留在第5頁,搜索過后的數據並沒有5頁,不論前台分頁或后台分頁,頁面都會展示:暫無數據! 但其實是有數據的,只是額沒有第五頁的數據。所以在搜索的時候將當前頁設置為1。
使用v-if綁定數據,當每次搜索的時候就注銷掉前一個分頁Dom,畫面刷新完畢后,渲染一個同樣的分頁,重新渲染必須放到$nextTick中,這樣在使用分頁就不會出現問題了。
search是一個方法在methods中,調用的時候@click="search"綁定到 搜索按鈕上 就可以了
handleFilter() {
this.listQuery.page = 1
this.pageshow = false
this.getList();
this.$nextTick(() => {
this.pageshow = true
})
},