详解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四种调用模式和this示例介绍
Jan 02 Javascript
JS逆序遍历实现代码
Dec 02 Javascript
原生JS下拉加载插件分享
Dec 26 Javascript
jQuery实现动态文字搜索功能
Jan 05 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
详解在express站点中使用ejs模板引擎
Sep 21 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 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设计模式 Builder(建造者模式)
2011/06/26 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
2015/12/24 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
Python实现的HTTP并发测试完整示例
2020/04/23 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
Python编写万花尺图案实例
2021/01/03 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
大学生自荐信
2013/12/11 职场文书
企业法人代表任命书
2014/06/06 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
加薪申请书应该这样写!
2019/07/04 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
python的html标准库
2022/04/29 Python