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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
详解Vue的异步更新实现原理
Dec 22 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
vue+flask实现视频合成功能(拖拽上传)
Mar 04 Vue.js
vue elementUI表格控制对应列
Apr 13 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
python标准日志模块logging的使用方法
2013/11/01 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
python模拟Django框架实例
2016/05/17 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python numpy数组复制使用实例解析
2020/01/10 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
Python爬取梨视频的示例
2021/01/29 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
进程的查看和调度分别使用什么命令
2015/03/25 面试题
千元咖啡店的创业计划书范文
2013/12/29 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
党校学习心得体会范文
2014/09/09 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
团员自我评价范文
2015/03/10 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书