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 18 Vue.js
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
VUE实现吸底按钮
Mar 04 Vue.js
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
Apr 17 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
Vue的过滤器你真了解吗
Feb 24 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 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
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
python学习数据结构实例代码
2015/05/11 Python
python框架django基础指南
2016/09/08 Python
详解Python中的type和object
2018/08/15 Python
物流仓储实习自我鉴定
2013/09/25 职场文书
采购文员岗位职责
2013/11/20 职场文书
两只小狮子教学反思
2014/02/05 职场文书
团支部推优材料
2014/05/21 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
小学开学标语
2014/07/01 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
JavaScript实现队列结构过程
2021/12/06 Javascript