前言:
Vue的使用一般搭配element組件,但是有的組件使用起來會很坑取胎。
比如這個el-pagination:使用他時數(shù)據(jù)的多少你還有去處理展哭,在使用完整功能的時候。
就像我今天遇到的闻蛀,在用接口獲取到數(shù)據(jù)后匪傍,在頁碼選擇展示多少數(shù)據(jù)一頁,
選擇超出接口數(shù)據(jù)時
觉痛,會出現(xiàn)頁數(shù)沒及時響應的問題役衡。(你頁面顯示的1,但你頁數(shù)
傳給接口的還是上一次參數(shù))
這就很坑了薪棒,所以包括我和大家都覺得這是一個數(shù)據(jù)未能及時更新的問題手蝎。
正文:
所以,我在網(wǎng)上找了一下俐芯。結果都是用的同一個方法棵介,就是利用v-if的特性:銷毀和重新渲染進行解決
但是,我覺得這樣重復操作dom是不合理的吧史,所以我也推出了一種方法邮辽。
解決方法:
- v-if
在el-pagination標簽里
添加
v-if, 默認綁定為true,在獲取數(shù)據(jù)的接口前
銷毀他(v-if置為false),接口獲取數(shù)據(jù)后用 this.$nextTick
里面寫(v-if置為true)
el-pagination 頁碼 更新問題 (分享)
- watch + 頁數(shù)重置
這個分為兩種贸营,一種為封裝組件的一種為直接使用的吨述。
一,封裝組件钞脂,直接將值傳回使用的組件上揣云。使用的組件直接接收
,并實時監(jiān)聽
即可冰啃,然后更新問題則用在接收數(shù)量時
灵再,將頁數(shù)置為1
,再調(diào)用
一次接口即可亿笤。
上代碼:
封裝的組件.png
接收的組件.png
接收組件監(jiān)聽.png
二翎迁,直接使用時,@handle-size-change和 @handle-current-change綁定的都是方法净薛,在
接收數(shù)量方法
里面直接寫
this.pageInfo.currentPage = 1;
this.getLists();
第二種方法這樣寫汪榔,因為接口拿到數(shù)據(jù)頁碼是直接賦值的,這里動態(tài)接收的時候,沒必要接收痴腌。直接賦值雌团,再調(diào)用接口。