详解vue中的父子传值双向绑定及数据更新问题


Posted in Javascript onJune 13, 2019

在进行父子组件传值时,用到子组件直接控制父组件中的变量值以及在vue中直接更改对象或者数组的值,视图未发生变化的解决办法,当时完成项目时,一直未找到原因,修改了好久。

1.父子组件传值双向绑定

在传递给子组件中的变量上使用.sync修饰符,就能够实现父子传值的双向绑定

<!-- 父组件 -->
<template>
 <div class="audioCate">
 <child :show.sync="showModel" @closeModel="handleCloseModel"></child>
 </div>
</template>
<script>
 import child from './child'
 export default{
 components: {
  child,
 }
 data() {
  return {
  showModel: false
  }
 },
 methods: {
  handleCloseModel() {
  this.showModel = false;
  }
 }
 }
</script>
<!-- 子组件 -->
<template>
 <div class="cate" @click="handleClick">
 <div></div>
 </div>
</template>
<script>
 export default{
 props: {
  show: Boolean,
 },
 data() {
  return {
  showModel: false
  }
 },
 methods: {
  handleClick() {
  /* 直接更新父组件中的showModel值 */
  this.$emit('update:show', false);
  /* 或者调用父组件中的方法对showModel进行更改 */
  /* this.$emit('closeModel'); */
  }
 }
 }
</script>

2.修改对象或数组中的键,视图未发生变化

使用$set方法进行修改,官方文档中也有说明

详解vue中的父子传值双向绑定及数据更新问题

当时我是直接对数组中的值进行修改,但是视图没有发生变化

<script>
 export default{
 data() {
  return {
  item: {
   title: '222'
  },
  options: [11, 22],
  list: [
   {
   title: '2222'
   }
  ]
  }
 },
 created() {
  /* 对于对象,第一个为要修改的对象,第二个参数为对象的键,第三个为要修改的键对应的值 */
  this.$set(this.item, 'title', '2200');
  /* 对于对象,第一个为要修改的数组,第二个参数为数组索引,第三个为要修改的索引对应的值 */
  this.$set(this.options, 0, 33);
  /* 对于数组里包含对象,可以利用循环对其进行修改 */
  this.list.forEach(item => {
  this.$set(item, '_disableExpand', true);
  });
  /* 对于数组里包含对象,也可以利用Object.assign对其进行修改 */
  this.list[0] = Object.assign({}, this.list[0], { num: 10 });
  this.$set(this.list, 0, this.list[0]);
 },
 }
</script>

也可以直接进行修改后对页面进行强制刷新,使用$forceUpdate()方法

this.options[0] = 100;
this.$forceUpdate();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
JS实现跟随鼠标闪烁转动色块的方法
Feb 26 Javascript
直接拿来用的页面跳转进度条JS实现
Jan 06 Javascript
Angular 应用技巧总结
Sep 14 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
js利用递归与promise 按顺序请求数据的方法
Aug 30 Javascript
js实现点击选项置顶动画效果
Aug 25 Javascript
基于Vue实现平滑过渡的拖拽排序功能
Jun 12 #Javascript
Vue + Elementui实现多标签页共存的方法
Jun 12 #Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 #Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 #jQuery
小程序组件之自定义顶部导航实例
Jun 12 #Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 #Javascript
React 全自动数据表格组件——BodeGrid的实现思路
Jun 12 #Javascript
You might like
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
最小二乘法及其python实现详解
2020/02/24 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
加拿大留学自荐信
2014/01/28 职场文书
2015年大学生实习评语
2015/03/25 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
MySQL限制查询和数据排序介绍
2022/03/25 MySQL
LyScript实现绕过反调试保护的示例详解
2022/08/14 Python