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 相关文章推荐
在html页面中包含共享页面的方法
Oct 24 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
May 23 Javascript
在Uni中使用Vue的EventBus总线机制操作
Jul 31 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
小程序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字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python简单文本处理的方法
2015/07/10 Python
python中异常报错处理方法汇总
2016/11/20 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
用python批量移动文件
2021/01/14 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
冰淇淋店的创业计划书
2014/02/07 职场文书
个人授权委托书范本
2014/04/03 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2015年小学校长工作总结
2015/05/19 职场文书