详解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 相关文章推荐
超棒的javascript页面顶部卷动广告效果
Dec 01 Javascript
JavaScript 继承详解(二)
Jul 13 Javascript
location对象的属性和方法应用(解析URL)
Apr 12 Javascript
jquery提交form表单简单示例分享
Mar 03 Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 Javascript
JS实现汉字与Unicode码相互转换的方法详解
Apr 28 Javascript
基于node.js之调试器详解
Aug 22 Javascript
switchery按钮的使用方法
Dec 18 Javascript
新版小程序登录授权的方法
Dec 12 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
Feb 06 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
php用wangeditor3实现图片上传功能
2019/08/22 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python命令行解析模块详解
2018/02/01 Python
pandas实现选取特定索引的行
2018/04/20 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
Python饼状图的绘制实例
2019/01/15 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
做一个有道德的人演讲稿
2014/05/14 职场文书
保险专业求职信
2014/07/07 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
小学生作文评语集锦
2014/12/25 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS