elementUI的table表格改變數(shù)據(jù)不更新問題解決
預(yù)期效果:點擊輸入框旁邊的圖標(biāo),輸入框變?yōu)榭奢斎霠顟B(tài);這里控制輸入的 editable 字段不是 data 原有的屬性,也不是 data 賦值時就存在的字段。

問題原因:在 Vue 實例創(chuàng)建時,以及 data 賦值時 editable 并未聲明,因此就沒有被Vue轉(zhuǎn)換為響應(yīng)式的屬性,自然就不會觸發(fā)視圖的更新。
解決方法:
1、給 data 賦值前把 editable 屬性添加到數(shù)組里
這里就不貼代碼了,大概思路就是:獲取到列表信息之后緩存在一個臨時數(shù)組里(不可以是 data 里面定義好的對象),循環(huán)遍歷列表信息,給每一條數(shù)據(jù)都添加一個屬性 editable 值為 false,然后再把處理過的列表信息賦值給 data 。
2、使用:key 或者 v-if
修改綁定在 table 上面的 key 值,可以觸發(fā) table 的重新渲染,這樣就可以把修改后的 data 在表格里面更新渲染。
<el-table :data="data" :key='num' stripe border>
<el-table-column align="center" label="字段中文名稱">
<template slot-scope="scope">
<div style="display: flex;">
<el-input :disabled='!scope.row.editable' style="margin-right: 10px;"></el-input>
<el-button @click='changeEdit(scope.row)' type='text' icon="el-icon-edit-outline"></el-button>
</div>
</template>
</el-table-column>
</el-table>
export default{
data(){
return{
num:0,
data:[]
}
},
methods:{
changeEdit(row){
//每次點擊圖標(biāo) key 自動加一
row.editable = true;
num++;
}
}
}
這種方法有一個問題:給 table 添加一個默認(rèn)高度,這個時候數(shù)據(jù)比較多的話會出現(xiàn)滾動條;當(dāng)滾動條拉到下面,點擊圖標(biāo)讓對應(yīng)的輸入框可編輯,同時觸發(fā) table 渲染,滾動條會回到頂部,想查看被操作的輸入框需要重新把滾動條拉到最下面;這樣體驗非常不好。如果有這樣的場景推薦使用下面的方法。
3、使用 $set
$set 可以讓動態(tài)的給 data 添加響應(yīng)式的屬性,讓 editable 變?yōu)轫憫?yīng)式的,就可以直接觸發(fā)頁面更新。
<el-table :data="data" stripe border>
<el-table-column align="center" label="字段中文名稱">
<template slot-scope="scope">
<div style="display: flex;">
<el-input :disabled='!scope.row.editable' style="margin-right: 10px;"></el-input>
<el-button @click='changeEdit(scope.$index,scope.row)' type='text' icon="el-icon-edit-outline"></el-button>
</div>
</template>
</el-table-column>
</el-table>
export default{
data(){
return{
num:0,
data:[]
}
},
methods:{
changeEdit(index,row){
row.editable = true;
this.$set(this.data,index,row);
}
}
}
根據(jù)上面的方法延伸 :當(dāng) vue 能夠檢測到數(shù)組的變化,觸發(fā)更新。
changeEdit(index,row){
row.editable = true;
this.data.splice(1,0);
}
到此這篇關(guān)于elementUI的table表格改變數(shù)據(jù)不更新問題解決的文章就介紹到這了,更多相關(guān)element table數(shù)據(jù)不更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- elementui?el-table底層背景色修改簡單方法
- 關(guān)于ElementUI el-table 鼠標(biāo)滾動失靈的問題及解決辦法
- Vue+EleMentUI實現(xiàn)el-table-colum表格select下拉框可編輯功能實例
- elementUI中el-table表頭和內(nèi)容全部一行顯示完整的方法
- 使用elementUI table展開行內(nèi)嵌套table問題
- Vue?ElementUI在el-table中使用el-popover問題
- 解決elementUI 切換tab后 el_table 固定列下方多了一條線問題
- elementui的table根據(jù)是否符合需求合并列的實現(xiàn)代碼
相關(guān)文章
vue中{{}},v-text和v-html區(qū)別與應(yīng)用詳解
這篇文章主要介紹了vue中{{}},v-text和v-html區(qū)別與應(yīng)用詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
淺談vue自定義全局組件并通過全局方法 Vue.use() 使用該組件
本篇文章主要介紹了vue自定義全局組件并通過全局方法 Vue.use() 使用該組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
vue使用swiper實現(xiàn)中間大兩邊小的輪播圖效果
這篇文章主要介紹了vue使用swiper實現(xiàn)中間大兩邊小的輪播圖效果,本文分步驟通過實例代碼講解的非常詳細(xì),需要的朋友可以參考下2019-11-11
解決Vue路由導(dǎo)航報錯:NavigationDuplicated:?Avoided?redundant?navig
這篇文章主要給大家介紹了關(guān)于解決Vue路由導(dǎo)航報錯:NavigationDuplicated:?Avoided?redundant?navigation?to?current?location的相關(guān)資料,這是最近做項目時候遇到的一個問題,現(xiàn)將解決辦法分享出來,需要的朋友可以參考下2023-01-01
Element?UI?Dialog對話框改成固定高度超出部分滾動條滾動
這篇文章主要給大家介紹了關(guān)于Element?UI?Dialog對話框改成固定高度超出部分滾動條滾動的相關(guān)資料,el-dialog默認(rèn)高度是自由拉伸的,當(dāng)內(nèi)容超過屏幕時會出現(xiàn)滾動條,按鈕和標(biāo)題都會隨著滾動,用戶體驗不好,需要的朋友可以參考下2024-05-05
vue中使用v-if,v-else來設(shè)置css樣式的步驟
我們在使用vue項目開發(fā)時,v-if是使用的非常多的,在這里我們談?wù)勅绾问褂胿-i來綁定修改css樣式,使用的主要是雙向數(shù)據(jù)綁定,即通過改變他的狀態(tài)來改變他的樣式,這篇文章主要介紹了vue中如何使用v-if,v-else來設(shè)置css樣式,需要的朋友可以參考下2023-03-03

