vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法


Posted in Javascript onNovember 27, 2017

上篇文章给大家介绍了浅析Vue自定义组件的v-model,大家可以参考下。接下来通过本文给大家介绍vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法,具体详情如下所示:

父子组件通信,都是单项的,很多时候需要双向通信。方法如下:

1、父组件使用:msg.sync="aa"  子组件使用$emit('update:msg', 'msg改变后的值xxx')

2、父组件传值直接传对象,子组件收到对象后可随意改变对象的属性,但不能改变对象本身。

3、父组件使用: v-model

第一种曾经被废除过,由于维护成本的原因被删掉,但经过证实,确实有存在的意义,又被加上。

  第一种:

父组件: 

<template>
 <div>
  <aa class="abc" :snycTest.sync="test" ></aa>
   {{'外面的值:' + test}}
  <button @click="fn">
   外面改变里面
  </button>  
 </div>
</template>
<script>
import aa from './test.vue'
 export default {
  data () {
   return {
    test: ''
   }
  },
  methods: {
   fn () {
    this.test += 1
   }
  },
  components:{
   aa
  }
 }
</script>

子组件:

<template>
 <div>
  <ul>
   <li>{{'里面的值:'+ snycTest}}</li>
   <button @click="fn2">里面改变外面</button>
  </ul>
 </div>
</template>
<script>
 export default {
  props: {
   snycTest: ''
  },
  methods: {
   fn2 () {
    this.$emit('update:snycTest', this.snycTest+1) //这儿是关键 update:snycTest 自定义事件会告诉父组件将父组件的 test值改为this.snycTest+1,并传回给子组件。
} } } </script>

v-model写法一:

父组件:

<template>
 <div>
  <aa class="abc" v-model="test" ></aa> // 组件中使用v-model
   {{'外面的值:' + test}} // 这儿试验test与内部msg值为双向绑定关系
  <button @click="fn">
   外面改变里面
  </button>
  
 </div>
</template>
<script>
import aa from './test.vue'
 export default {
  data () {
   return {
    test: ''
   }
  },
  methods: {
   fn () {
    this.test += 1 
   }
  },
  components:{
   aa
  }
 }
</script>

子组件写法一:

<template>
 <div>
  <ul>
   <li>{{'里面的值:'+ msg}}</li>
   <button @click="fn2">里面改变外面</button>
  </ul>
 </div>
</template>
<script>
 export default {
  model: {  // 使用model, 这儿2个属性,prop属性说,我要将msg作为该组件被使用时(此处为aa组件被父组件调用)v-model能取到的值,event说,我emit ‘cc' 的时候,参数的值就是父组件v-model收到的值。
   prop: 'msg',
   event: 'cc'
  },
  props: {
   msg: ''
  },
  methods: {
   fn2 () {
    this.$emit('cc', this.msg+2)
   }
  }
 }
</script>

v-model写法二

父组件 <aa class="abc" v-model='test' ></aa>

子组件

<template>
 <div>
  <ul>
   <li>{{'里面的值:'+ value}}</li> // 组件使用时有v-model属性,value初始传的‘what' 不会被渲染,而是v-model绑定的test值被渲染,这儿value会被重新赋值为v-model绑定的test的值。
   <button @click="fn2">里面改变外面</button>
  </ul>
 </div>
</template>
<script>
 export default {
  props: {
   value: { // 必须要使用value

 default: '',


},
  },
  methods: {
   fn2 () {
    this.$emit('input', this.value+2) // 这儿必须用input 发送数据,发送的数据会被父级v-model=“test”接受到,再被value=test传回来。
   }
  }
 }

一般双向绑定用v-model写法一。

总结

以上所述是小编给大家介绍的vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
浅谈Javascript事件处理程序的几种方式
Jun 27 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
THREE.JS入门教程(4)创建粒子系统
Jan 24 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
Seajs的学习笔记
Mar 04 Javascript
JavaScript实现继承的4种方法总结
Oct 16 Javascript
Three.js学习之网格
Aug 10 Javascript
input type=file 选择图片并且实现预览效果的实例
Oct 26 Javascript
jQuery实现模糊查询的方法分析
May 10 jQuery
使用elementUI实现将图片上传到本地的示例
Sep 04 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 Javascript
vue轮播图插件vue-awesome-swiper
Nov 27 #Javascript
在vue中实现简单页面逆传值的方法
Nov 27 #Javascript
浅析Vue自定义组件的v-model
Nov 26 #Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 #Javascript
Javacript中自定义的map.js  的方法
Nov 26 #Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 #Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 #Javascript
You might like
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
php 归并排序 数组交集
2011/05/10 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
繁简字转换功能
2006/07/19 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
JS继承用法实例分析
2015/02/05 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python正则表达式之作业计算器
2016/03/18 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
大数据分析用java还是Python
2020/07/06 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
Java语言的优势
2015/01/10 面试题
新娘父亲婚礼致辞
2014/01/16 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2014年电教工作总结
2014/12/19 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Python中22个万用公式的小结
2021/07/21 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技