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 相关文章推荐
jQuery 处理网页内容的实现代码
Feb 15 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
UI Events 用户界面事件
Jun 27 Javascript
JS实现闪动的title消息提醒效果
Jun 20 Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
May 25 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 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中的多种加密技术及代码示例解析
2016/10/20 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JavaScript转换与解析JSON方法实例详解
2015/11/24 Javascript
JS判断当前页面是否在微信浏览器打开的方法
2015/12/08 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
vue--vuex详解
2019/04/15 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
2019/08/02 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
举例讲解Python中is和id的用法
2015/04/03 Python
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
python实现多进程代码示例
2018/10/31 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
ktv中秋节活动方案
2014/01/30 职场文书
员工合理化建议书
2014/05/19 职场文书
大型演出策划方案
2014/05/28 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS