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 相关文章推荐
javascript/jquery获取地址栏url参数的方法
Mar 05 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
深入理解JQuery中的事件与动画
May 18 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
vuejs绑定class和style样式
Apr 11 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 Javascript
在vue项目中集成graphql(vue-ApolloClient)
Sep 08 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
浅谈layui 绑定form submit提交表单的注意事项
Oct 25 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
PHP DataGrid 实现代码
2009/08/12 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
JS 表单验证大全
2011/11/23 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
学习jQuey中的return false
2015/12/18 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
用js实现放大镜效果
2020/10/28 Javascript
python2.7和NLTK安装详细教程
2018/09/19 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
Python实现制度转换(货币,温度,长度)
2019/07/14 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
社区护士演讲稿
2014/08/27 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
MySQL三种方式实现递归查询
2022/04/18 MySQL