分享Vue组件传值的几种常用方式(二)
前言
大家好,在上一篇文章分享Vue组件传值的几种常用方式(一)中我们介绍了父组件向子组件传值的相关流程,今天我们主要来学习子组件如何向父组件传值。子向父传值涉及到的方法的核心是 “$.emit” , 我们将利用这一方法来实现既定目标。
子向父传值
子向父传值意思就是要把子组件里的值传递给父组件,方法在子组件的methods模块中利用$.emit,其内部我们再来定义一个事件名和所要传递的值。
目标:在子组件内的输入框中输入的值,会显示在父组件文本的相应区域
示例:
一 文件配置及模板生成
关于vue文件的格式上一篇文章中已经讲过,这里就不详细讲了,这里稍微讲一下文件的导入导出以及操作main.js文件等。
第一步,在Father组件和Son组件中快速生成模板,并将Son.vue导入进Father中完成注册,再使用Son组件的实例
<template> <div class="box2"> <Son></Son> </div> </template> <script> import Son from '@/components/Son.vue' export default { components: { Son, }, } </script> <style lang="less"></style>
第二步,完善main.js文件,因为编译器在这里解析文件是从main.js开始的
到此我们完成了文件的基本配置,下面我们就正式开始学习子向父传值
二 Son组件内部处理
首先我们在Son组件中的template模板中完善ul结构,我们需要在名为box的dix盒子内部创建一个输入框,然后为它绑定一个input事件,方法名为SonSend,里面传递一个参数,获取到我们在输入框中输入的值
既然我们在上文提到需要利用this.$emit来进行传值,那么接下来我们就在methods方法中定义一个名为SonSend的方法
注意此时参数e就是输入框中输入的值,我们需要把这个参数e传递给父组件中,而前面的 ‘Accept’ 字符串就是我们要传递给父组件并且在Son实例上定义的事件名,这里的this指向的是这个export default导出模块
三 Father组件内部处理
那在Father父组件中,我们需要在实例Son身上注册一个Accept事件,方法名设置成Result。接着我们要在父组件的导出模块中定义一个data数据,属性名为res,值为0,并且我们要在template中定义一个h1标签,在其内部创建一个插值表达式,用来显示我们是否已经正确的拿到子组件传递过来的值
date数据:
现在我们需要在父组件的methods中定义一个Result方法,内部接收一个val参数,这个参数就是子组件传递过来的数据。在函数体内,我们把val参数的值赋值给res,这样我们就完善了res值的更改条件
接着我们运行"npm run serve"来查看页面上的内容
这样一来我们就完成了子组件向父组件的值传递过程
总结
- 子组件的传递的核心重点是子组件内部的this.emit('要传递的事件名', this.xxx)
- 在父组件中我们需要给子组件的实例身上绑定事件,而不是其他地方,注意事件名是子组件传递过来的那组字符串
- 需要在父组件内部的methods中定义方法,改变data数据源的值,实现原有数据的覆盖
- 方法中的参数就是子组件传递过来的值,在本案例中就是我们输入的值
代码
Father.vue
<template> <div class="box2"> <Son @Accept="Result"></Son> <h1>Father: 子组件传递过来的值是 ---{{ res }}</h1> </div> </template> <script> import Son from '@/components/Son.vue' export default { components: { Son, }, data() { return { res: 0, } }, methods: { Result(val) { this.res = val console.log(val) }, }, } </script> <style lang="less"></style>
Son.vue
<template> <div class="box"> Son: <input type="text" placeholder="请输入您想传递的值" @input="SonSend($event.target.value)" /> </div> </template> <script> export default { methods: { SonSend(e) { this.$emit('Accept', e) console.log(e) }, }, } </script> <style lang="less"></style>
到此这篇关于分享Vue组件传值的几种常用方式(二)的文章就介绍到这了,更多相关Vue组件传值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
这篇文章主要介绍了vue项目使用高德地图的定位及关键字搜索功能的实例代码,也是小编踩了无数坑总结出来的经验,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下2020-03-03vue elementui table编辑表单时弹框增加编辑明细数据的实现
在Vue项目中,通过使用Element UI框架实现表单及其明细数据的新增和编辑操作,主要通过弹窗形式进行明细数据的增加和编辑,有效提升用户交互体验,本文详细介绍了相关实现方法和代码,适合需要在Vue项目中处理复杂表单交互的开发者参考2024-10-10vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
这篇文章主要介绍了vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-11-11Vue中调用组件使用kebab-case短横线命名法和使用大驼峰的区别详解
这篇文章主要介绍了Vue中调用组件使用kebab-case(短横线)命名法和使用大驼峰的区别,通过实例可以看出如果是在html中使用组件,那么就不能用大驼峰式写法,如果是在.vue 文件中就可以,需要的朋友可以参考下2023-10-10详解vue2.0的Element UI的表格table列时间戳格式化
本篇文章主要介绍了详解vue2.0的Element UI的表格table列时间戳格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-06-06
最新评论