elementUI 的 table 表格改变数据不更新问题
- 1、随便调用 页面其他事件 达到页面改变刷新数据 (推荐)
- 2、使用 this.$set(this.data,index,row)
<template>
<el-table
ref="table"
:data="tableData"
border
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
</el-table>
<el-button @click="changeRowData"></el-button>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
},
methods: {
// 改变第一行数据
changeRowData(){
this.tableData[0].name = 'zz'
// 数据并不会更新
},
}
}
}
</script>
1、随便调用 页面其他事件 达到页面改变刷新数据 (推荐)
利用 v-if这些都是一个逻辑,都是改变事件,达到数据刷新,没必要用 v-if 消耗性能
// 改变第一行数据
changeRowData(){
this.tableData[0].name = 'zz'
// 数据并不会更新, 随便调用一下页面事件,什么事件都可以,聚焦等都可以,这里使用 element 表格自带的高亮行事件
this.$refs.table.setCurrentRow(this.tableData[0])
},
2、使用 this.$set(this.data,index,row)
比较耗性能
// 改变第一行数据
changeRowData(){
this.tableData[0].name = 'zz'
this.$set(this.tableData,0,this.tableData[0])
},