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动态调整TextArea高度的代码
Dec 28 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
JavaScript 中使用 Generator的方法
Dec 29 Javascript
vue移动端路由切换实例分析
May 14 Javascript
puppeteer库入门初探
Jan 09 Javascript
Vue仿百度搜索功能
Dec 28 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
文章推荐系统(三)
2006/10/09 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
Javascript中Event属性搜集整理
2013/09/17 Javascript
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Python numpy数组转置与轴变换
2019/11/15 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
大学生学习自我评价
2014/01/13 职场文书
妇女工作先进事迹
2014/08/17 职场文书
竞聘自述材料
2014/08/25 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
大学生实习证明范本
2014/09/19 职场文书
成事在人观后感
2015/06/16 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis