如: this.list = this.list2, 结果在list改变后 list2也改变,这不是我们想要的效果
第一种:
利用 JSON.parse 和 JSON.stringify
this.list= JSON.parse( JSON.stringify(this.list2) )
第二种:
ES6 的解析语法
this.list= { …this.list2}
this.arr= […this.arr2]
补充知识:解决vue中v-model绑定的变量赋值给了另一个变量后,两个变量同时改变
先来看一下问题背景
我们要做一个 搜索+分页 的功能,使用vue
我们将分页控件绑定了点击事件,点击后提交v-model绑定的formData表单,但是我们忽略了一个问题,就是当输入的信息改变的情况下,不点击搜索,直接点击分页控件,提交的将会是新现在搜索框中的搜索条件。这样就不和逻辑了。
于是我们在data中新加了一个表单的对象 submitForm,只有在点击 查询 的时候,v-model绑定的 formData 表单才会赋值给这个对象,而翻页的时候提交的是 submitForm 。这样就解决了这个问题。
data() {
return {
formData: {
timeStart: '',
timeEnd: '',
// 分页数据
pageNo: 1,
pageSize: 10
},
submitForm: {
timeStart: '',
timeEnd: '',
// 分页数据
pageNo: 1,
pageSize: 10
},
}
this.submitForm = this.formData
// 用 new也是一样达不到效果
this.submitForm = new Object(this.formData)
但是!!!
submitForm 竟然跟着变了
这是因为在Object赋值的时候,传递的不是值,而是引用,他们指向了同一个空间!
解决
第一种:利用 JSON.parse 和 JSON.stringify
this.submitForm = JSON.parse( JSON.stringify(this.formData) )
第二种:ES6 的解析语法
this.submitForm = { …this.formData }
以上这篇vue 避免变量赋值后双向绑定的操作就是小编分享给大家的全部内容了。
- vue3.2+ts实现在方法中可调用的拟态框弹窗(类el-MessageBox)
- 可能是全网vue v-model最详细讲解教程
- Vue3中echarts无法缩放的问题及解决方案
- Vue $nextTick 为什么能获取到最新Dom源码解析
- Vue生命周期实例分析总结
- Vue实现简单基础的图片裁剪功能
- vue.config.js 的完整配置(超详细)
- vue原生input输入框原理剖析
版权:版权申明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 70068002@qq.com 举报,一经查实,本站将立刻删除。
转载请注明出处:https://www.stntk.com/2475.html
还没有评论呢,快来抢沙发~