实现需求: 在弹出框中填写数据,在点击确认时 将数据添加至筛选条件 如果点击取消 那么不保存填写的值
思路:
1、在点击确定的时候将当前对象中的值拷贝一份,在下一次点击展开卡片的时候 将拷贝的值重新赋值给 卡片绑定的对象
2、在点击取消时 将之前确认时保存的备份对象 覆盖掉当然卡片绑定的对象 这时候就能确保 下一次打开卡片时数据是确认的保存的数据 而不是上一次填写的数据
实现:
1、脑子抽搐了吧 忘记了深拷贝 直接这样赋值 this.priceBase = this.price ,后来发现这样的话 会产品对象之间引用关系
改为对象深拷贝: 写法 this.priceBase = this.deepCopy(this.price)
深度拷贝方法如下:
deepCopy (obj) { var result = Array.isArray(obj) ? [] : {} for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object') { result[key] = this.deepCopy(obj[key]) } else { result[key] = obj[key] } } } return result }
自己遇到的问题记录一下 避免失忆!