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页面刷新,数据丢失的问题
Nov 24 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
Vue与React的区别和优势对比
Dec 18 Vue.js
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
详解Vue3使用axios的配置教程
Apr 29 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
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python常用知识梳理(必看篇)
2017/03/23 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python中wx模块的具体使用方法
2020/05/15 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
就业推荐自我鉴定
2013/10/06 职场文书
商务日语毕业生自荐信范文
2013/11/14 职场文书
挂科检讨书范文
2014/02/20 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
语文教师个人工作总结
2015/02/06 职场文书
Nginx配置文件详解以及优化建议指南
2021/09/15 Servers