详解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 相关文章推荐
jQuery 解析xml文件
Aug 09 Javascript
滚动图片效果 jquery实现回旋滚动效果
Jan 08 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
JS倒计时代码汇总
Nov 25 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
jQuery实现的图片轮播效果完整示例
Sep 12 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 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
77A一级收信机修理记
2021/03/02 无线电
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
2014/05/11 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
js实现下一页页码效果
2017/03/07 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python简单实现旋转图片的方法
2015/05/30 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Python实现将json文件中向量写入Excel的方法
2018/03/26 Python
python实现括号匹配的思路详解
2018/08/23 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
python 简单的调用有道翻译
2020/11/25 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
班组安全员工作职责
2014/02/01 职场文书
活动总结书
2014/05/08 职场文书
工业设计专业自荐书
2014/06/05 职场文书
小学生运动会广播
2015/08/19 职场文书
关于对TypeScript泛型参数的默认值理解
2022/07/15 Javascript