vue 避免变量赋值后双向绑定的操作


Posted in Javascript onNovember 07, 2020

如: 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 避免变量赋值后双向绑定的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery星级插件、支持页面中多次使用
Mar 25 Javascript
jQuery中append()方法用法实例
Dec 25 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
JavaScript数值类型知识汇总
Nov 17 Javascript
VSCode 配置uni-app的方法
Jul 11 Javascript
原生js实现滑块区间组件
Jan 20 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 #Javascript
解决VueCil代理本地proxytable无效报错404的问题
Nov 07 #Javascript
Nuxt 项目性能优化调研分析
Nov 07 #Javascript
js实现日历
Nov 07 #Javascript
工作中常用js功能汇总
Nov 07 #Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 #Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 #Javascript
You might like
php设置session值和cookies的学习示例
2014/03/21 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP简单日历实现方法
2016/07/20 PHP
基于php判断客户端类型
2016/10/14 PHP
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
2012/05/24 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
python查询mysql中文乱码问题
2014/11/09 Python
python中使用序列的方法
2015/08/03 Python
python 列表降维的实例讲解
2018/06/28 Python
Django组件content-type使用方法详解
2019/07/19 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
小学教师的个人自我鉴定
2013/10/26 职场文书
自我评价范文点评
2013/12/04 职场文书
2014年征兵标语
2014/06/20 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
python - asyncio异步编程
2021/04/06 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
vue封装数字翻牌器
2022/04/20 Vue.js