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中的isNaN函数使用说明
Nov 10 Javascript
json数据的列循环示例
Sep 06 Javascript
Jquery.addClass始终无效原因分析
Sep 08 Javascript
使用Jquery实现每日签到功能
Apr 03 Javascript
jQuery插件ajaxfileupload.js实现上传文件
Oct 23 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
Mar 15 Javascript
基于easyui checkbox 的一些操作处理方法
Jul 10 Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 Javascript
vue深入解析之render function code详解
Jul 18 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
微信小程序实现的自定义分享功能示例
Feb 12 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版(3)
2006/10/09 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
python解析文件示例
2014/01/23 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
Python切片操作实例分析
2018/03/16 Python
Python之list对应元素求和的方法
2018/06/28 Python
django中forms组件的使用与注意
2019/07/08 Python
python如何实现异步调用函数执行
2019/07/08 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
大学生求职计划书
2014/04/30 职场文书
公司领导班子对照材料
2014/08/18 职场文书
施工现场安全管理制度
2015/08/05 职场文书