Vue使用.sync 实现父子组件的双向绑定数据问题


Posted in Javascript onApril 04, 2019

1.前言

最近在vue 项目中有一个需求, 就是我需要根据不同的类型在页面中放不同的组件, 组件需要跟当前页面的数据进行双向绑定,如果都写在同一个页面 代码会显得比较多,毕竟我当前页面已经7-800行代码了 所以我需要把一些元素定义成组件 ,封装起来,所以就会遇到 数据的传值绑定问题

2.父组件

首先我们来看看官方文档 [ https://cn.vuejs.org/v2/guide/components.html#sync-修饰符 ]

.sync 修饰符所提供的功能。当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定

就是说我们可以直接在我们需要传的prop后面加上 .sync

比如 我下面需要绑定   p_model,然后我在他后面加上.sync

<certificate-input
    :p_model.sync='pname'>
 </certificate-input>

他会扩展成:

<certificate-input :p_model="pname" @update:p_model="val => pname= val"></certificate-input>

父组件全部代码:

<template>
 <div>
 <certificate-input
    :p_model.sync='pname'
    :xi_model.sync="xiname">
 </certificate-input>
</div>
</template>
import CertificateInput from '../common/CertificateInput.vue'
export default {
 name: 'fathor',
 components: {
  CertificateInput 
 },
 data() {
  return {
   pname:"",
   xiname:""
 }  
}

子组件

上面说了一大推父组件下面我们来看看子组件怎么写 ?

因为我项目中使用vux 代码就直接复制过来改了一下

<template>
 <div>
  <x-input
   title="姓名" 
   v-model="name" 
   ></x-input>
  <x-input title="身份证号" 
    v-model="idCard" 
    placeholder="请输入身份证号"
    required>
  </x-input>
 </div>
</template>
<script type="text/javascript">
 import { XInput} from 'vux'
 export default{
  name:'certificateInput',
  props:["p_model","xi_model"],
  components:{
   XInput
  },
  data(){
   return{
    name:this.p_model,
    idCard:this.xi_model
   }
  },
  watch:{
  
   p_model(val) { 
    this.address = val;
   },
   name(val){
  //设置监听,如果改变就更新 p_model
    this.$emit('update:p_model', val)
   },
   xi_model(val){
    this.certificate = val
   },
   idCard(val){
     this.$emit('update:xi_model', val)
   }
  }
 }
</script>

由上面可以看出   子组件主要代码 就是监听他的改变 然后触发父组件监听的事件

name(val){
  //设置监听,如果改变就更新 p_model
    this.$emit('update:p_model', val)
}

好了 上面就是我的方法

感觉写的好low

以后多多改善

总结

以上所述是小编给大家介绍的Vue使用.sync 实现父子组件的双向绑定数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
juqery 学习之五 文档处理 插入
Feb 11 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
Bootstrap模态框案例解析
Mar 05 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
小程序实现上下移动切换位置
Sep 23 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
Feb 19 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
Jun 11 Javascript
小程序getLocation需要在app.json中声明permission字段
Apr 04 #Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 #Javascript
详解JavaScript的变量
Apr 04 #Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 #Javascript
js 计算图片内点个数的示例代码
Apr 04 #Javascript
在node中使用jwt签发与验证token的方法
Apr 03 #Javascript
全面了解JavaScript的作用域链
Apr 03 #Javascript
You might like
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
php创建类并调用的实例方法
2019/09/25 PHP
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
express如何使用session与cookie的方法
2018/01/30 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
NodeJS实现同步的方法
2019/03/02 NodeJs
微信小程序进入广告实现代码实例
2019/09/19 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
django解决跨域请求的问题
2018/11/11 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python数字类型math库原理解析
2020/03/02 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
如何用Python徒手写线性回归
2021/01/25 Python
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
英文自荐信
2013/12/15 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫