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 StringBuilder类实现
Dec 22 Javascript
Js 中debug方式
Feb 07 Javascript
jQuery 性能优化手册 推荐
Feb 23 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
Jul 31 Javascript
Bootstrap媒体对象的实现
May 01 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
Sep 04 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
关于foreach循环中遇到的问题小结
May 08 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
vue-cli3配置favicon.ico和title的流程
Oct 27 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
与数据库连接
2006/10/09 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php新建文件的方法实例
2019/09/26 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
详解vuex的简单todolist例子
2019/07/14 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
Python实现控制台输入密码的方法
2015/05/29 Python
浅析Python中signal包的使用
2015/11/13 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
python实现websocket的客户端压力测试
2019/06/25 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
国际象棋商店:The Chess Store
2018/07/09 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
电力安全事故反思
2014/04/27 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
二手车转让协议书
2015/01/29 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
创业计划书之熟食店
2019/10/16 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers