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 相关文章推荐
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
如何实现vue的tree组件
Dec 03 Vue.js
vue实现图片裁剪后上传
Dec 16 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
梳理一下vue中的生命周期
Dec 30 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
vue实现拖拽交换位置
Apr 07 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
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
jQuery实现跨域
2015/02/03 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
pandas apply多线程实现代码
2020/08/17 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
我爱家乡演讲稿
2014/09/12 职场文书
民主生活会汇报材料
2014/12/15 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
农村婚庆主持词
2015/06/29 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Python集合set()使用的方法详解
2022/03/18 Python
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js