vue2.0 项目使用element ui 框架,封装了el-dialog组件,在el-dialog组件使用时显示另外一个组件(富文本编译器组件)的页面,但是我在问题的列表,多次点击编辑使用el-dialog显示页面时,发现数据没有实时更新,一直是第一次的数据,查了很久没有解决办法,求解决办法
不知道你这个问题是否已经解决, 如果还没有解决的话:根据参考资料中的实现思路和代码示例,可以采取以下步骤解决el-dialog缓存问题:
在el-dialog组件中,使用v-if指令判断dialog是否可见,根据条件设置对应的属性值。在本例中,可以将visible属性绑定到data中的变量addDeviceDialogVisible上,并在对话框展示时将addDeviceDialogVisible设置为true。
在el-dialog组件中,设置destroy-on-close属性为true,这样在关闭dialog时会销毁dialog中的元素。
在弹出dialog的按钮点击事件中,添加逻辑来清空对话框中的数据。可以使用resetFields()方法来重置表单。如果需要在获取到表单对象后立即执行resetFields()方法,则可以使用setTimeout()方法来确保表单对象已加载。示例代码:
addDeviceBtn() {
this.addDeviceDialogVisible = true;
setTimeout(() => {
this.$refs.addDeviceForm.resetFields();
}, 0);
},
<el-dialog
title="新增"
:visible.sync="addDeviceDialogVisible"
:append-to-body="true"
top="1vh"
width="70%"
:key="timer"
@destroy-on-close="true"
>
<addDevice
ref="addDeviceForm"
@addDeviceResult="addDeviceResult"
@quxiaoClickResult="quxiaoClickResult"
></addDevice>
</el-dialog>
通过以上步骤,应该能够解决el-dialog缓存问题,并实时更新展示数据。
参考资料: - Element UI Dialog destroy-on-close - Element UI Dialog - Element UI form - Vue.js官方文档
在打开弹窗的时候 子组件进行初始化
我在iview多次遇到数据赋值了不更新的问题,饿了么应该也差不多吧,用这个解决的
let dataTemp = JSON.stringify(this.table.data);
this.table.data = JSON.parse(dataTemp);