简化描述如下。
组件代码:
<el-table :data="tableData">
<el-table-column>
<template slot-scope="scope">
<el-popover ref="myPopover" trigger="click">
<el-table :data="scope.row.name">
<el-table-column prop="firstName" label="firstName"></el-table-column>
<el-table-column prop="lastName" label="lastName"></el-table-column>
</el-table>
</el-popover>
<el-button v-popover:myPopover>查看</el-button>
</template>
</el-table-column>
</el-table>
如上,主页面有一个el-table
,页面加载时,通过自定义的this.getData()
函数从后台数据库获取到tableData
数据,其结构:
tableData: [
{name: [{firstName: 'Nick', lastName: 'Young'}], age:22},
{name: [{firstName: 'Allen', lastName: 'Zhang'}], age:23}
]
当点击查看
按钮时,能够正常显示el-popover
中嵌入的表格数据。
另外有一个editData()
函数,它的功能是:向后台发送put
请求,修改数据库中的一条数据,比如将{name: [{firstName: 'Allen', lastName: 'Zhang'}], age:23}
修改为:{name: [{firstName: 'Jack', lastName: 'Ma'}], age:18}
,
然后调用this.getData()
函数刷新当前tableData
数据。
现在问题来了。实际中,当执行this.editData()
函数后,点击查看
按钮,并不会显示el-popover
中的表格数据;但是当刷新当前页面后,就能够正常显示出来。
目前找了一个比较笨的解决方法:在editData()
函数的最后使用this.$router.push
刷新当前页面,弊端是页面有较为明显的刷新动效,体验不佳。
请问各位碰到过类似问题么?有啥比较好的解决方法没?
在数组或者对象中,通过id或者其它标志找到你要更新的数据,通过this.$set(this.someObject,'b',2)更新数据。
关于数组,对象有不同的更新方法,详情参见:https://cn.vuejs.org/v2/guide...