列表数据编辑/查看和新增公用一个对话框,数据重置方法

文章介绍了在Vue.js应用中如何重置对话框数据,包括手动设置对象属性为空和使用resetFields方法。同时,强调了ref的使用,特别是在普通元素和子组件上的区别,以及何时正确访问$refs。此外,还讨论了浅拷贝和深拷贝的概念及其实现方法,如Object.assign和JSON.parse/JSON.stringify。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对话框数据重置方法:

方法一:

        再次打开对话框时,手动将对象属性值置空。需要搭配clearValidate()方法使用,该方法作用是移除校验结果。

方法二:

        使用resetFields()方法方法对form表单进行重置,将所有字段值重置为初始值,并移除校验结果。

        form表单需要配置ref属性,使用方式:this.$refs.formref.resetFields()方法.

注意:

        方法二列表数据编辑/查看和新增公用一个对话框,查询出列表后,先点击编辑或查看,这时表单所有字段值的初始值即为该条数据值,再点击新增,即使使用resetFields()方法,也会带出第一次进列表点击的数据。

$refs的基本用法

  • ref 加在普通的元素上,用this.$refs.(ref值) 获取到的是dom元素
  • ref加在子组件上,用this.r e f s . ( r e f 值 ) 获 取 到 的 是 组 件 实 例 , 可 以 使 用 组 件 的 所 有 方 法 。

注意:

        ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。所以需要在 this.$nextTick(()=>{}) 中调用。

浅拷贝和深拷贝

浅拷贝:

        针对对象和array类型,浅拷贝只是拷贝了指针地址,实际存储位置还是一样的,修改拷贝后的值,拷贝前的值也会跟着变。

实现:

        对象的浅拷贝:     Object.assign({},被拷贝的对象)

        数组的浅拷贝:        数组.concat(),数组.slice()

注意:

        slice()对于字符串、数字及布尔值来说(不是 String、Number 或者 Boolean 对象),slice 会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。

深拷贝:

        会重新获取存储位置,指针地址和存储位置都是新的,和被拷贝的对象无关。

实现:

        JSON.parse(JSON.stringify()), 用JSON.stringify将对象转成JSON字符串,再用JSON.parse()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。

        手写递归方法,将被拷贝对象的值取出来,逐一赋值给新对象即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值