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 proxyTable 接口跨域請求調(diào)試的示例
本篇文章主要介紹了vue proxyTable 接口跨域請求調(diào)試的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
淺談vue項目利用Hbuilder打包成APP流程,以及遇到的坑
這篇文章主要介紹了淺談vue項目利用Hbuilder打包成APP流程,以及遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

