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解决innerText浏览器兼容问题思路代码
May 17 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
js实现加载更多功能实例
Oct 27 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
Dec 30 Javascript
BootStrap表单验证实例代码
Jan 13 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
Aug 17 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
Oct 26 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
150行Node.js实现的dns代理工具
Aug 02 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
js 模拟气泡屏保效果代码
2010/07/10 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
js面向对象的写法
2016/02/19 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
原生js简单实现放大镜特效
2017/05/16 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
python创建线程示例
2014/05/06 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
用python发送微信消息
2020/12/21 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
会议活动邀请函
2014/01/27 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
八项规定对照检查材料
2014/08/31 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
骨干教师考核评语
2014/12/31 职场文书
男方婚礼答谢词
2015/01/20 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
2016新年晚会开场白
2015/12/03 职场文书
话题作文之自信作文
2019/11/15 职场文书
Django程序的优化技巧
2021/04/29 Python
MySQL 服务和数据库管理
2021/11/11 MySQL
python开发人人对战的五子棋小游戏
2022/05/02 Python
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS