vue使用v-model进行跨组件绑定的基本实现方法


Posted in Vue.js onApril 28, 2021

大家好,今天我们来说一下使用v-model实现父子组件的绑定效果

1:简单版代码如下:

父组件:

<template>
  <div>
  // 3:使用子组件,并使用v-model绑定
    <About v-model="father"/>
  </div>
</template>

<script>
// 1:引入子组件
import About from "./About";
export default {
// 2:注册子组件
  components: {
    About,
  },
  data() {
      return {
      // 值给空
          father:''
      }
  },
  // 监听组件数据的变化
  watch:{
      father(val){
          console.log(val);
      }
  }
};
</script>

子组件:

<template>
  <div>
  // 2:使用v-model绑定
      <input type="text" v-model="son">
  </div>
</template>

<script>
export default {
    // 1:接收父组件的信息
    props: {
        value:{
            type:String,
            default:''
        }
    },
    data() {
        return {
        // 3:赋空值
            son:''
        }
    },
    // 4:监听 如果改变
    watch:{
        // 把value赋值给son   
        value(){
        // 这里的this.value是props里的value
            this.son = this.value
        },
        // 把son传递给父组件
        son(){
            this.$emit('input',this.son)
        }
    }
}
</script>

至于为什么子组件向父组件传递时,$emit的第一个参数为'input',有兴趣的同行可以去了解一下v-model实现的原理

2:下面进入项目中的使用(获取子组件的图片地址,传给父组件,同步更新图片信息)

基本上差不多

Ⅰ:在父组件内引入子组件,并在子组件标签内使用v-model,赋值为空
(UploadImg标签 是引入的 子组件)

vue使用v-model进行跨组件绑定的基本实现方法

Ⅱ:接着在子组件内使用 props接收:

vue使用v-model进行跨组件绑定的基本实现方法

Ⅲ:在子组件 页面 内同样使用v-model,并在data内赋值为空 图片:

vue使用v-model进行跨组件绑定的基本实现方法

Ⅳ:在子组件内使用watch用来监听其变化

vue使用v-model进行跨组件绑定的基本实现方法

分解图上代码:

value函数把传来的父组件赋值给子组件,this.value也就是props里的value

value() {
      this.SonStaffPhoto = this.value
      console.log(this.SonStaffPhoto)
    }

这里是v-model绑定的子组件函数,用来把自己传递给父组件

SonStaffPhoto() {
      this.$emit('input', this.SonStaffPhoto)
    },

到这里你就可以把想传递给父组件的内容赋值给 this.SonStaffPhoto了(我赋值给了用来保存图片地址的变量)

Ⅴ:也可以在父组件里监听其变化:

vue使用v-model进行跨组件绑定的基本实现方法

父组件里的this.staffPhoto,同样可以把想绑定的内容赋值给它(我赋值给了最新的图片变量,这样就过实现了子组件图片更新,父组件也同步更新的效果)

总结

到此这篇关于vue使用v-model进行跨组件绑定的基本实现方法的文章就介绍到这了,更多相关vue用v-model跨组件绑定内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue中computed和watch有哪些区别
Dec 19 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
关于vue中如何监听数组变化
vue实现简单数据双向绑定
Apr 28 #Vue.js
vue引入Excel表格插件的方法
Apr 28 #Vue.js
原生JS封装vue Tab切换效果
vue项目两种方式实现竖向表格的思路分析
vue首次渲染全过程
浅谈vue2的$refs在vue3组合式API中的替代方法
You might like
PHP安全上传图片的方法
2015/03/21 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
python实现键盘输入的实操方法
2019/07/16 Python
python 爬取疫情数据的源码
2020/02/09 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
护理个人求职信范文
2014/01/08 职场文书
对公司合理化的建议书
2014/03/12 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
实习指导老师意见
2015/06/04 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers