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 相关文章推荐
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
Vue仿Bibibili首页的问题
Jan 21 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 Vue.js
vue首次渲染全过程
Apr 21 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
Vue图片裁剪组件实例代码
Jul 02 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 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导出oracle库的php代码
2009/04/20 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php后门URL的防范
2013/11/12 PHP
php数组去重实例及分析
2013/11/26 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python实现从ftp服务器下载文件的方法
2015/04/30 Python
python实现将内容分行输出
2015/11/05 Python
python实现红包裂变算法
2016/02/16 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python实现俄罗斯方块游戏
2020/03/25 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
毕业生自荐书模版
2014/01/04 职场文书
股权转让协议书范本
2014/04/12 职场文书
项目负责人任命书
2014/06/04 职场文书
教师考核评语大全
2014/12/31 职场文书
2015年保管员工作总结
2015/04/30 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL