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)文章
解決vue-cli webpack打包后加載資源的路徑問(wèn)題
今天小編就為大家分享一篇解決vue-cli webpack打包后加載資源的路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Elemenu中el-table中使用el-popover選中關(guān)閉無(wú)效解決辦法(最新推薦)
這篇文章主要介紹了Elemenu中el-table中使用el-popover選中關(guān)閉無(wú)效解決辦法(最新推薦),因?yàn)樵趀l-table-column里,因?yàn)槭嵌嘈?使用trigger="manual"?時(shí),用v-model="visible"來(lái)控制時(shí),控件找不到這個(gè)值,才換成trigger="click",需要的朋友可以參考下2024-03-03
vue實(shí)現(xiàn)省市區(qū)的級(jí)聯(lián)選擇
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)省市區(qū)的級(jí)聯(lián)選擇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Vue新搭檔TypeScript快速入門(mén)實(shí)踐記錄
TypeScript 是一種由微軟開(kāi)發(fā)的自由和開(kāi)源的編程語(yǔ)言,它是 JavaScript 的一個(gè)超集,擴(kuò)展了 JavaScript 的語(yǔ)法。這篇文章主要介紹了Vue新搭檔TypeScript快速入門(mén)實(shí)踐,需要的朋友可以參考下2021-06-06
Vue+elementUI實(shí)現(xiàn)多圖片上傳與回顯功能(含回顯后繼續(xù)上傳或刪除)
這篇文章主要介紹了Vue+elementUI實(shí)現(xiàn)多圖片上傳與回顯功能(含回顯后繼續(xù)上傳或刪除),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Element input樹(shù)型下拉框的實(shí)現(xiàn)代碼
這篇文章主要介紹了Element input樹(shù)型下拉框的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
vue 請(qǐng)求后臺(tái)數(shù)據(jù)的實(shí)例代碼
本篇文章主要介紹了vue 請(qǐng)求后臺(tái)數(shù)據(jù)的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧、2017-06-06
使用vue框架 Ajax獲取數(shù)據(jù)列表并用BootStrap顯示出來(lái)
這篇文章主要介紹了使用vue框架 Ajax獲取數(shù)據(jù)列表并用BootStrap顯示出來(lái),需要的朋友可以參考下2017-04-04

