Vuetify:关闭v-dialog时如何刷新数据?
解决Vuetify对话框关闭时残留旧数据的问题
核心原因:关闭对话框时未清空
reservation、reservation_invoice、reservation_rooms的旧数据,导致无对应发票的条目打开时,显示上一次的残留内容。具体解决方案:
- 编写数据重置方法
在Vue组件的methods中添加专门重置这三个数据对象的方法,将其恢复到初始空状态:
resetReservationData() { // 重置reservation到定义时的初始结构 this.reservation = { cancellations: [], payment_term: [], departure_city: '', departure_date: '', payment_mode: '', payment_type: '', total: '', nr_room: '', trip: '', response_code: '', }; // 重置reservation_invoice为初始空对象(根据你的实际结构调整) this.reservation_invoice = {}; // 重置reservation_rooms为初始空数组 this.reservation_rooms = []; }
- 绑定对话框关闭事件触发重置
在你的v-dialog标签上添加@close事件,调用上面的重置方法,确保对话框关闭时自动清空数据:
<v-dialog v-model="dialog" @close="resetReservationData"> <!-- 对话框内的内容,比如发票展示区域、房间信息等 --> </v-dialog>
- 可选:打开对话框前提前重置数据
为了更稳妥,也可以在点击表格行、发起API请求之前先调用重置方法,确保获取新数据前状态是干净的:
openReservationDialog(reservationId) { // 先清空旧数据 this.resetReservationData(); // 调用API获取对应ID的预订数据 fetch(`/api/reservations/${reservationId}`) .then(res => res.json()) .then(data => { this.reservation = data.reservation; this.reservation_invoice = data.invoice || {}; this.reservation_rooms = data.rooms || []; // 打开对话框 this.dialog = true; }); }
通过以上操作,无论关闭对话框还是打开新的预订条目,数据都会被重置为初始状态,不会再出现旧数据残留的问题。
内容的提问来源于stack exchange,提问作者Bucur Alex
相关产品推荐
相关产品推荐

