详解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 获取图片颜色
Apr 05 Javascript
JavaScript 字符串处理函数使用小结
Dec 02 Javascript
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 Javascript
js+html5实现复制文字按钮
Jul 15 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 Javascript
JS中FormData类实现文件上传
Mar 27 Javascript
React实现类似淘宝tab居中切换效果的示例代码
Jun 02 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
Reformation官网:美国女装品牌
2018/09/14 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
学生逃课检讨书
2015/02/17 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫