对话框数据重置方法:
方法一:
再次打开对话框时,手动将对象属性值置空。需要搭配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()把字符串解析成对象,一去一来,新的对象产生了,而且对象会开辟新的栈,实现深拷贝。
手写递归方法,将被拷贝对象的值取出来,逐一赋值给新对象即可。