问题
今天开发遇到一个奇怪的问题,就是通过下拉框去切换一个属性,然后通过v-if判断这个参数去控制两个el-form-column显隐的问题:
当 formData.aaa == 1时,列正常显示,但是当切换到 formData.aaa == 2的时候,prop对应数据是有的,但是内容却没有显示。
<el-table-column prop="status" label="使用状态" v-if="formData.aaa == 1">
<template slot-scope="scope">
<span></span>
</template>
</el-table-column>
<el-table-column prop="updateTimeStr" label="更新时间" min-width="160" v-if="formData.aaa == 2"></el-table-column>
解决方案
vue在渲染元素时,处于效率考虑, 会尽量地复用已有的元素而非重新渲染,导致元素间相互影响,不能正常渲染。
用 key 管理可复用的元素。只需添加一个具有唯一值的 key 表明“该元素是完全独立的,不要复用它”
<el-table-column key="updateTimeStr" prop="updateTimeStr" label="更新时间" min-width="160" v-if="formData.aaa == 2"></el-table-column>