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
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
Vue实现点击当前行变色
Dec 14 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
vscode自定义vue模板的实现
Jan 27 Vue.js
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
Vue+Flask实现图片传输功能
Apr 01 Vue.js
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
Vue.js实战之利用vue-router实现跳转页面
2017/04/01 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
微信小程序实现授权登录
2019/05/15 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
Python 时间处理datetime实例
2008/09/06 Python
python每次处理固定个数的字符的方法总结
2013/01/29 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
python中map()函数的使用方法示例
2017/09/29 Python
深入理解Python中的*重复运算符
2017/10/28 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
《乡愁》教学反思
2014/02/18 职场文书
实习协议书
2015/01/27 职场文书
学年个人总结范文
2015/03/05 职场文书
大学生活感想
2015/08/10 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
python 模块重载的五种方法
2021/04/24 Python