el-dialog弹窗中进度条的(mqtt提供)数据无法清空(清空方法)

文章讲述了如何在Vue应用中处理关闭对话框时清空进度条数据,包括使用$nextTick配合clearValidate和resetFields方法,以及利用后台和MQTT生成随机数防止数据混淆。还介绍了使用Vue内置方法清空数据的方案。
摘要由CSDN通过智能技术生成

 清空方法

 this.$nextTick(()=>{
          this.$refs.devicefromDialog.clearValidate('airSwitchNo');//清除的校验规则prop传的值
          this.$refs['devicefromDialog'].resetFields();//清除表单内容
     })

场景:进度条的数据需要在关闭的时候,清空上一次的缓存记录,但是给关闭按钮了一个点击事件发现真实数据在控制台清空了,但是弹窗中进度条数据还是有上一次的记录,然后由上一次的缓存的记录变到0,再由0加载本次的进度到100%。

解决办法:

第一种:需要后台和mqtt配合,各种生成一个同一次操作的任务生成一个相同的随机数据(因为账号可以同时多人登录,所以随机数可以保证是同一个人在某个时间下产生的进度条数据,这样多个人在同一时刻操作同一批数据时进度条数据就不会被混淆在一起)
1.1、种方法是先把每次操作的某个任务的接口接通后生成一个随机数;再由mqtt返回数据中添加一个随机数,
然后mqtt随机数和后台的操作接口生成的随机数相对比然后再添加到进度条相关数据(操作总数、当前完成数,
导致出错以后的错误信息列表)中。

1.2、在每次关闭的时候清空上一次的进度条数据
closeProgressBar(type) {
    this.$nextTick(()=>{//为了确保进度条没有到百分百前就关闭弹窗,数据不再更新到百分百的问题
      this.$set(this, 'lineNum', 0)
      this.$set(this, 'handlerNum', 0)
      this.$set(this, 'proportion', 0)
      this.$set(this, 'errorMessageList', [])
      this.$set(this, 'javaRequestId', '')
    })
}
第二种方法使用vue的自带方法清除变化后的数据(未测试)

 

<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" @close='closeProgressBar("progressBar")' :title="proportionDialogTitle" :visible.sync="dialogProgressBar" center width="20%"
               class="existDeviceDialog">
<el-progress :percentage="proportion>100? 100 : proportion"></el-progress>

</el-dialog>



this.$options.data():vue原始的数据,初始化时加载的data
this.$data:现在阶段的vue数据,就是当前变化后data的数据
Object.assign(目标对象,源对象1,源对象2....) 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。


object.assign注意:
1、目标对象要与源对象有相同的属性,将会被源对象覆盖(后面的源对象具有相同的属性都会被依次被后面的源对象覆盖掉)
2、该方法只会拷贝源对象自身可枚举的属性到目标对象
3、目标对象自身也会改变,如下案例


let obj = {a:1,b:2,c:3};
let obj2 = {a:7, b:8, c:9, d:4, e:5, c:6};
console.log(Object.assign(obj,obj2)) //{a: 7, b: 8, c: 6, d: 4, e: 5}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值