使用element組件table表格實(shí)現(xiàn)某條件下復(fù)選框無法勾選
element組件table表格實(shí)現(xiàn)某條件下復(fù)選框無法勾選
需求
實(shí)現(xiàn)el-table
存在復(fù)選框,但在啟用條件下無法勾選。
<el-table :data="dataList" ref="table" :row-class-name="tableRowClassName" :row-key="getRowKey" @selection-change="selectionChangeHandle" @sort-change="sortChangeHandle"> <el-table-column fixed="left" :selectable="checkSelect" :reserve-selection="true" type="selection" width="55" align="center"></el-table-column> </el-table>
//勾選置灰 checkSelect (row,index) { let isChecked = true; if (row.status== 'finish') { // 判斷里面是否存在某個(gè)參數(shù) //status==finish 時(shí) 該行復(fù)選框不可勾選 isChecked = false } else { isChecked = true } return isChecked }, //確定唯一的key值 getRowKey(row){ return row.id; //每條數(shù)據(jù)的唯一識(shí)別值 }, //字體顏色置灰 tableRowClassName({row,rowIndex}){ if (row.type === 1) { // 判斷里面是否存在某個(gè)參數(shù) return 'fontSize' } return '' },
<style> .el-table .fontSize{ color: #BFBABA; } </style>
Element Table組件復(fù)選框默認(rèn)選中不生效
問題描述
獲取到要默認(rèn)選中的row后,直接使用:
this.$refs.multipleTable.toggleRowSelection(row)
發(fā)現(xiàn)并沒有選中。
原因分析
Vue 在更新 DOM 時(shí)是異步執(zhí)行的,使用上面的方法更新數(shù)據(jù)后,DOM并沒有同步更新,所以沒有顯示出來。
官網(wǎng)是這樣解釋的:
Vue 異步執(zhí)行 DOM 更新。只要觀察到數(shù)據(jù)變化,Vue 將開啟一個(gè)隊(duì)列,并緩沖在同一事件循環(huán)中發(fā)生的所有數(shù)據(jù)改變。如果同一個(gè) watcher 被多次觸發(fā),只會(huì)被推入到隊(duì)列中一次。這種在緩沖時(shí)去除重復(fù)數(shù)據(jù)對于避免不必要的計(jì)算和 DOM 操作上非常重要。然后,在下一個(gè)的事件循環(huán)“tick”中,Vue 刷新隊(duì)列并執(zhí)行實(shí)際 (已去重的) 工作。Vue 在內(nèi)部嘗試對異步隊(duì)列使用原生的 Promise.then 和MessageChannel,如果執(zhí)行環(huán)境不支持,會(huì)采用 setTimeout(fn, 0)代替。
例如,當(dāng)你設(shè)置vm.someData = ‘new value’,該組件不會(huì)立即重新渲染。當(dāng)刷新隊(duì)列時(shí),組件會(huì)在事件循環(huán)隊(duì)列清空時(shí)的下一個(gè)“tick”更新。多數(shù)情況我們不需要關(guān)心這個(gè)過程,但是如果你想在 DOM 狀態(tài)更新后做點(diǎn)什么,這就可能會(huì)有些棘手。雖然 Vue.js 通常鼓勵(lì)開發(fā)人員沿著“數(shù)據(jù)驅(qū)動(dòng)”的方式思考,避免直接接觸 DOM,但是有時(shí)我們確實(shí)要這么做。為了在數(shù)據(jù)變化之后等待 Vue 完成更新 DOM ,可以在數(shù)據(jù)變化之后立即使用Vue.nextTick(callback) 。這樣回調(diào)函數(shù)在 DOM 更新完成后就會(huì)調(diào)用。
解決方案
改為:
this.$nextTick(() => { this.$refs.multipleTable.toggleRowSelection(row) })
將回調(diào)(這里是操作DOM更新選中數(shù)據(jù))延遲到下次 DOM 更新循環(huán)之后執(zhí)行。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 關(guān)于extjs treepanel復(fù)選框選中父節(jié)點(diǎn)與子節(jié)點(diǎn)的問題
- vue基于element-ui的三級CheckBox復(fù)選框功能的實(shí)現(xiàn)代碼
- vue+element UI實(shí)現(xiàn)樹形表格帶復(fù)選框的示例代碼
- vuejs+element UI table表格中實(shí)現(xiàn)禁用部分復(fù)選框的方法
- element的el-tree多選樹(復(fù)選框)父子節(jié)點(diǎn)關(guān)聯(lián)不關(guān)聯(lián)
- el-table?選中行與復(fù)選框相互聯(lián)動(dòng)的實(shí)現(xiàn)步驟
- Vue3+ElementUI 多選框中復(fù)選框和名字點(diǎn)擊方法效果分離方法
- Vue el-table復(fù)選框全部勾選及勾選回顯功能實(shí)現(xiàn)
- el-table表格點(diǎn)擊該行任意位置時(shí)也勾選上其前面的復(fù)選框
相關(guān)文章
Vue3中使用Element-Plus的el-upload組件限制只上傳一個(gè)文件的功能實(shí)現(xiàn)
在 Vue 3 中使用 Element-Plus 的 el-upload 組件進(jìn)行文件上傳時(shí),有時(shí)候需要限制只能上傳一個(gè)文件,本文將介紹如何通過配置 el-upload 組件實(shí)現(xiàn)這個(gè)功能,讓你的文件上傳變得更加簡潔和易用,需要的朋友可以參考下2023-10-10vue.js出現(xiàn)Vue.js?not?detected錯(cuò)誤的解決方案
這篇文章主要介紹了vue.js出現(xiàn)Vue.js?not?detected錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09關(guān)于ElementUI的el-upload組件二次封裝的問題
這篇文章主要介紹了關(guān)于ElementUI的el-upload組件二次封裝的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10使用vue實(shí)現(xiàn)多規(guī)格選擇實(shí)例(SKU)
這篇文章主要介紹了使用vue實(shí)現(xiàn)多規(guī)格選擇實(shí)例(SKU),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Vue實(shí)現(xiàn)商品詳情頁的評價(jià)列表功能
這篇文章主要介紹了Vue實(shí)現(xiàn)商品詳情頁的評價(jià)列表功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09