el-element中el-table表格嵌套el-select實(shí)現(xiàn)動(dòng)態(tài)選擇對(duì)應(yīng)值功能
先看問(wèn)題還原圖:
問(wèn)題描述:
小編在做需求時(shí),遇到了在el-table表格中加入多條數(shù)據(jù),并且每條數(shù)據(jù)要通過(guò)el-select來(lái)選取相應(yīng)的值,做到動(dòng)態(tài)選擇。
解決方法:
思路:
- 最開(kāi)始,小編的實(shí)現(xiàn)效果是左邊紅色框的效果,選擇其中一個(gè)時(shí),其他的也對(duì)應(yīng)賦值。
- 主要是因?yàn)閑l-option的選項(xiàng)都是相同的,v-model 的值也是相同的。
- 那讓每一條 v-model 的值不同不就好了么??!
代碼:
html中代碼:
<el-table-column label="文檔類(lèi)別" prop="categoryName"> <template slot-scope="scope"> <el-select :ref="'categoryName' + scope.$index" v-model="tableData[scope.$index]['categoryName']" placeholder="請(qǐng)選擇文檔類(lèi)別" clearable > <el-option :value="tableData[scope.$index]['categoryName']" style="height: auto"> <el-tree :ref="'categoryNameTree' + scope.$index" :data="typeList" node-key="id" :props="typeTreeProps" @node-click="getTypeList(scope.$index)" > <span slot-scope="{ node }">{{ node.label }}</span> </el-tree> </el-option> </el-select> </template> </el-table-column>
代碼解說(shuō):
在 < el-table > 中綁定數(shù)據(jù) :data="tableData" tableData 為數(shù)組
el-select中
- scope.$index ----- 為tableData中每條數(shù)據(jù)的下標(biāo)
- :ref="'categoryName' + scope.$index" ----- 設(shè)置 ref ,用戶選擇完值后 el-option 自動(dòng)隱藏
- v-model="tableData[scope.$index]['categoryName']" ----- 綁定動(dòng)態(tài)的 v-model ,很重要。要注意的是 tableData[scope.$index] 是通過(guò)下標(biāo)找當(dāng)數(shù)組tableData中當(dāng)前選擇的數(shù)據(jù)。而這個(gè) categoryName 參數(shù)必須是數(shù)組 tableData 中存在的。
el-option中
- :value="tableData[scope.$index]['categoryName']" ----- 與 v-model 相同,綁定動(dòng)態(tài)值
el-tree中
:ref="'categoryNameTree' + scope.$index" ----- 與 el-select 中 ref 相同
@node-click="getTypeList(scope.$index)" ----- 選擇數(shù)據(jù)時(shí)觸發(fā),傳當(dāng)前元素的下標(biāo)
data中:
data() { return { tableData: [] // 接口返回的數(shù)據(jù),:data綁定在el-table中 typeList: [], // 接口返回的數(shù)據(jù),展現(xiàn)在el-option中,用el-tree包裹 typeTreeProps: { children: 'children', label: 'name' }, categoryName: '' } }
methods中:
getTypeList(index) { // .getCurrentKey()獲取到當(dāng)前要選擇節(jié)點(diǎn)的key值 // 使用此方法必須設(shè)置 node-key 屬性,若沒(méi)有節(jié)點(diǎn)被選中則返回 null const nodeId = this.$refs['categoryNameTree' + index].getCurrentKey() // .getNode(nodeId) 根據(jù) data 或者 key 拿到 Tree 組件中的 node const node = this.$refs['categoryNameTree' + index].getNode(nodeId) // 根據(jù)index給當(dāng)前元素的categoryName參數(shù)賦值 this.$set(this.tableData[index], 'categoryName', node.label) this.$set(this.tableData[index], 'categoryNo', node.data.docTypeNo) // 此時(shí)頁(yè)面上已經(jīng)可以動(dòng)態(tài)選擇 // 這一步是通過(guò)判斷當(dāng)前元素的v-model是否有值來(lái)控制el-option是否隱藏 if (this.tableData[index].categoryName) { // .blur()用來(lái)隱藏當(dāng)前展開(kāi)的下拉選擇框 this.$refs['categoryName' + index].blur() } },
this.$refs['categoryName' + index] 設(shè)置動(dòng)態(tài)是因?yàn)?,在有多條數(shù)據(jù)時(shí),如果不是動(dòng)態(tài)的,但凡有沒(méi)有值的選擇框,就不會(huì)觸發(fā)。而這樣就可以通過(guò)index來(lái)判斷隱藏那條元素。
總結(jié):
遇到新的問(wèn)題就會(huì)有新的知識(shí)增加,其實(shí)入職后有很多很多值得學(xué)習(xí),并且記住的知識(shí),但都因年底的原因,項(xiàng)目要保證封版后bug都解決掉而忙忘掉,翻回來(lái)去想記錄的時(shí)候又不從下手。
到此這篇關(guān)于el-element中el-table表格嵌套el-select實(shí)現(xiàn)動(dòng)態(tài)選擇對(duì)應(yīng)值功能的文章就介紹到這了,更多相關(guān)el-table表格動(dòng)態(tài)選擇對(duì)應(yīng)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- element el-table如何實(shí)現(xiàn)表格動(dòng)態(tài)增加/刪除/編輯表格行(帶校驗(yàn)規(guī)則)
- Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問(wèn)題
- element-ui復(fù)雜table表格動(dòng)態(tài)新增列、動(dòng)態(tài)調(diào)整行以及列順序詳解
- vue element-ui表格自定義動(dòng)態(tài)列具體實(shí)現(xiàn)
- vue?element-ui動(dòng)態(tài)橫向統(tǒng)計(jì)表格的實(shí)現(xiàn)
- element表格行列的動(dòng)態(tài)合并示例詳解
- element 動(dòng)態(tài)合并表格的步驟
- Vue+elementui 實(shí)現(xiàn)復(fù)雜表頭和動(dòng)態(tài)增加列的二維表格功能
- element根據(jù)輸入動(dòng)態(tài)生成表格的示例代碼
相關(guān)文章
ElementUI下拉組件el-select一次從后端獲取選項(xiàng)并設(shè)置默認(rèn)值方式
這篇文章主要介紹了ElementUI下拉組件el-select一次從后端獲取選項(xiàng)并設(shè)置默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01遇到vue前端npm?i報(bào)錯(cuò)多個(gè)版本不一致問(wèn)題及解決
這篇文章主要介紹了遇到vue前端npm?i報(bào)錯(cuò)多個(gè)版本不一致問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03element-ui?tree?異步樹(shù)實(shí)現(xiàn)勾選自動(dòng)展開(kāi)、指定展開(kāi)、指定勾選功能
這篇文章主要介紹了element-ui?tree?異步樹(shù)實(shí)現(xiàn)勾選自動(dòng)展開(kāi)、指定展開(kāi)、指定勾選,項(xiàng)目中用到了vue的element-ui框架,用到了el-tree組件,由于數(shù)據(jù)量很大,使用了數(shù)據(jù)懶加載模式,即異步樹(shù),需要的朋友可以參考下2022-08-08vite前端構(gòu)建Turborepo高性能monorepo方案
這篇文章主要為大家介紹了vite前端構(gòu)建Turborepo高性能monorepo方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Vue網(wǎng)絡(luò)請(qǐng)求的三種實(shí)現(xiàn)方式介紹
這篇文章主要介紹了Vue網(wǎng)絡(luò)請(qǐng)求的三種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09