VUE3子表格嵌套分頁(yè)查詢互相干擾的問(wèn)題解決方案
VUE3在表格中嵌套子表格
子表格的分頁(yè)查詢互相干擾的問(wèn)題解決
簡(jiǎn)單嵌套
如果不需要做子表格的分頁(yè)查詢,那么可以直接在主表格中嵌套子表格,有兩種方式;一種是主表格加載的同時(shí)加載子表格數(shù)據(jù),另一種是點(diǎn)擊展開時(shí)加載子表格數(shù)據(jù),盡量使用第二種方式;代碼如圖1-1所示;
圖1-1
我們可以看到在el-table控件中增加了一列<el-table-column type="expand">,這里的expand表示為展開類型,然后再嵌套了一個(gè)子表格,這個(gè)子表格就是列展開后的數(shù)據(jù),這樣我們就嵌套完成了,效果如圖1-2所示;
注:這里過(guò)于簡(jiǎn)單,我直接引用官網(wǎng)上的示例,感興趣的可以前往查看:
https://element-plus.org/zh-CN/component/table.html
圖1-2
子表格分頁(yè)查詢
在做這個(gè)功能的過(guò)程中,我遇到了以下幾個(gè)問(wèn)題:
1、展開時(shí)查詢沒問(wèn)題,但是切換頁(yè)面與改變?nèi)萘繒r(shí)無(wú)法賦值;
2、查詢過(guò)程中子表格共用一個(gè)加載變量,導(dǎo)致我展開一個(gè)子表格時(shí)另外的已展開的子表格會(huì)同時(shí)“轉(zhuǎn)圈圈”;
3、子表格共用一套分頁(yè)參數(shù),導(dǎo)致一個(gè)子表格切換頁(yè)面時(shí),其他子表格也跟著切換;我們一個(gè)一個(gè)來(lái)解決這些問(wèn)題;
切換頁(yè)面與改變?nèi)萘繒r(shí),我們會(huì)觸發(fā)el-pagination控件的size-change事件以及current-change事件,查看官方文檔得知這兩個(gè)事件都只有一個(gè)number類型的參數(shù),這里我們需要自己傳入?yún)?shù),那就是主表的當(dāng)前行(props.row),我們把行數(shù)據(jù)傳過(guò)去之后,才能給行的子表格這一個(gè)屬性賦值,如圖2-1所示;
圖2-1
注:這里的props是圖2-2在代碼中定義了的;
圖2-2
這樣我們的數(shù)據(jù)在查詢出來(lái)之后可以直接把值賦給row.detail,如圖2-3所示;
圖2-3
這樣我們解決了無(wú)法給子表格直接賦值的問(wèn)題,這里的解決方案主要是給el-pagination控件的size-change以及current-change事件手動(dòng)傳入當(dāng)前主表的行數(shù)據(jù)(props.row)。
其實(shí)第2個(gè)問(wèn)題與第3個(gè)問(wèn)題如出一轍,都是因?yàn)槎鄠€(gè)控件共用了同一個(gè)參數(shù)導(dǎo)致的互相干擾,很明顯這樣是不行的;所以我們只要想辦法解決共用參數(shù)的問(wèn)題就好了,我們可以發(fā)現(xiàn),其實(shí)子表格數(shù)據(jù)本身就是一個(gè)例子,多個(gè)子表格,用“同一個(gè)變量”(props.row.detail)來(lái)賦值,那是不是我們的分頁(yè)參數(shù)也可以在主表格中占一個(gè)位置,當(dāng)作參數(shù)使用呢,這樣主表每一行里面的子表格中的loading以及分頁(yè)參數(shù)自然就互不干擾了;
圖2-4為主表格中添加的列,我們用v-if來(lái)隱藏;
圖2-4
然后在分頁(yè)查詢事件觸發(fā)的時(shí)候,與行參數(shù)一并傳入了子表格查詢方法(childQuery)中,第一次查詢使用默認(rèn)參數(shù),每次查詢最后都保存后端分頁(yè)參數(shù)的結(jié)果,第二次開始后直接使用上次保存的分頁(yè)參數(shù)查詢即可,這樣就可以解決【分頁(yè)參數(shù)】互相干擾的問(wèn)題,同樣,isLoading參數(shù)也是每次使用當(dāng)前row的isLoading,這樣自然就不會(huì)互相干擾,代碼如圖2-5所示;
圖2-5
接下來(lái)我們看一下效果圖:
正常展開效果圖:
圖2-6
多子表展開效果圖:
圖2-7
圖2-8
換頁(yè)效果圖:
圖2-9
至此,問(wèn)題解決,這是我自己探索出來(lái)的解決方案,肯定不是最好的解決方案,如果有更好的方法,歡迎一并探討,感謝閱讀!
到此這篇關(guān)于VUE3子表格嵌套分頁(yè)查詢互相干擾的問(wèn)題解決的文章就介紹到這了,更多相關(guān)VUE3子表格嵌套分頁(yè)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue2使用?element表格展開功能渲染子表格的方式
- Vue導(dǎo)出json數(shù)據(jù)到Excel電子表格的示例
- VUE3子表格嵌套分頁(yè)查詢互相干擾的問(wèn)題解決方案
- vue?el-pagination分頁(yè)查詢封裝的示例代碼
- Vue分頁(yè)查詢?cè)趺磳?shí)現(xiàn)
- springboot結(jié)合vue實(shí)現(xiàn)增刪改查及分頁(yè)查詢
- 基于vue.js實(shí)現(xiàn)分頁(yè)查詢功能
- 使用Bootstrap4 + Vue2實(shí)現(xiàn)分頁(yè)查詢的示例代碼
- Vue.js實(shí)現(xiàn)分頁(yè)查詢功能
相關(guān)文章
Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁(yè)功能
ElementUI也是一套很不錯(cuò)的組件庫(kù),對(duì)于我們經(jīng)常用到的表格、表單、時(shí)間日期選擇器等常用組件都有著很好的封裝和接口。這篇文章主要介紹了Vue2.0+ElementUI+PageHelper實(shí)現(xiàn)的表格分頁(yè),需要的朋友可以參考下2021-10-10vue treeselect獲取當(dāng)前選中項(xiàng)的label實(shí)例
這篇文章主要介紹了vue treeselect獲取當(dāng)前選中項(xiàng)的label實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08分分鐘學(xué)會(huì)vue中vuex的應(yīng)用(入門教程)
本篇文章主要介紹了vue中vuex的應(yīng)用(入門教程),詳細(xì)的介紹了vuex.js和應(yīng)用方法,有興趣的可以了解一下2017-09-09vue組件封裝實(shí)現(xiàn)抽獎(jiǎng)隨機(jī)數(shù)
這篇文章主要為大家詳細(xì)介紹了vue組件封裝實(shí)現(xiàn)抽獎(jiǎng)隨機(jī)數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI)
本文主要介紹了Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05關(guān)于Echarts餅圖圖例太長(zhǎng)的解決方案
這篇文章主要介紹了關(guān)于Echarts餅圖圖例太長(zhǎng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02解決vue net :ERR_CONNECTION_REFUSED報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決vue net :ERR_CONNECTION_REFUSED報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08