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 相关文章推荐
在网页中控制wmplayer播放器
Jul 01 Javascript
浅谈javascript 面向对象编程
Oct 28 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
Angular 5.0 来了! 有这些大变化
Nov 15 Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
May 07 Javascript
微信小程序实现打卡日历功能
Sep 21 Javascript
基于Vue实现微前端的示例代码
Apr 24 Javascript
Nuxt.js nuxt-link与router-link的区别说明
Nov 06 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+SqlServer实现分页显示
2006/10/09 PHP
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
2010/02/07 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python工程师面试必备25条知识点
2018/01/17 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python检测网络延迟的代码
2018/05/15 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python 下载文件的几种方法汇总
2021/01/06 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
2014组织生活会方案
2014/05/19 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
离婚协议书范本2014
2014/10/27 职场文书
先进工作者申报材料
2014/12/23 职场文书
员工辞职信怎么写
2015/02/27 职场文书
XX部保密工作制度范本
2019/08/27 职场文书