分享Vue組件傳值的幾種常用方式(二)
前言
大家好,在上一篇文章分享Vue組件傳值的幾種常用方式(一)中我們介紹了父組件向子組件傳值的相關(guān)流程,今天我們主要來(lái)學(xué)習(xí)子組件如何向父組件傳值。子向父?jìng)髦瞪婕暗降姆椒ǖ暮诵氖?“$.emit” , 我們將利用這一方法來(lái)實(shí)現(xiàn)既定目標(biāo)。
子向父?jìng)髦?/h2>
子向父?jìng)髦狄馑季褪且炎咏M件里的值傳遞給父組件,方法在子組件的methods模塊中利用$.emit,其內(nèi)部我們?cè)賮?lái)定義一個(gè)事件名和所要傳遞的值。
目標(biāo):在子組件內(nèi)的輸入框中輸入的值,會(huì)顯示在父組件文本的相應(yīng)區(qū)域
示例:
一 文件配置及模板生成
關(guān)于vue文件的格式上一篇文章中已經(jīng)講過(guò),這里就不詳細(xì)講了,這里稍微講一下文件的導(dǎo)入導(dǎo)出以及操作main.js文件等。
第一步,在Father組件和Son組件中快速生成模板,并將Son.vue導(dǎo)入進(jìn)Father中完成注冊(cè),再使用Son組件的實(shí)例
<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文件,因?yàn)榫幾g器在這里解析文件是從main.js開(kāi)始的
到此我們完成了文件的基本配置,下面我們就正式開(kāi)始學(xué)習(xí)子向父?jìng)髦?/p>
二 Son組件內(nèi)部處理
首先我們?cè)赟on組件中的template模板中完善ul結(jié)構(gòu),我們需要在名為box的dix盒子內(nèi)部創(chuàng)建一個(gè)輸入框,然后為它綁定一個(gè)input事件,方法名為SonSend,里面?zhèn)鬟f一個(gè)參數(shù),獲取到我們?cè)谳斎肟蛑休斎氲闹?/p>
既然我們?cè)谏衔奶岬叫枰胻his.$emit來(lái)進(jìn)行傳值,那么接下來(lái)我們就在methods方法中定義一個(gè)名為SonSend的方法
注意此時(shí)參數(shù)e就是輸入框中輸入的值,我們需要把這個(gè)參數(shù)e傳遞給父組件中,而前面的 ‘Accept’ 字符串就是我們要傳遞給父組件并且在Son實(shí)例上定義的事件名,這里的this指向的是這個(gè)export default導(dǎo)出模塊
三 Father組件內(nèi)部處理
那在Father父組件中,我們需要在實(shí)例Son身上注冊(cè)一個(gè)Accept事件,方法名設(shè)置成Result。接著我們要在父組件的導(dǎo)出模塊中定義一個(gè)data數(shù)據(jù),屬性名為res,值為0,并且我們要在template中定義一個(gè)h1標(biāo)簽,在其內(nèi)部創(chuàng)建一個(gè)插值表達(dá)式,用來(lái)顯示我們是否已經(jīng)正確的拿到子組件傳遞過(guò)來(lái)的值
date數(shù)據(jù):
現(xiàn)在我們需要在父組件的methods中定義一個(gè)Result方法,內(nèi)部接收一個(gè)val參數(shù),這個(gè)參數(shù)就是子組件傳遞過(guò)來(lái)的數(shù)據(jù)。在函數(shù)體內(nèi),我們把val參數(shù)的值賦值給res,這樣我們就完善了res值的更改條件
接著我們運(yùn)行"npm run serve"來(lái)查看頁(yè)面上的內(nèi)容
這樣一來(lái)我們就完成了子組件向父組件的值傳遞過(guò)程
總結(jié)
- 子組件的傳遞的核心重點(diǎn)是子組件內(nèi)部的this.emit('要傳遞的事件名', this.xxx)
- 在父組件中我們需要給子組件的實(shí)例身上綁定事件,而不是其他地方,注意事件名是子組件傳遞過(guò)來(lái)的那組字符串
- 需要在父組件內(nèi)部的methods中定義方法,改變data數(shù)據(jù)源的值,實(shí)現(xiàn)原有數(shù)據(jù)的覆蓋
- 方法中的參數(shù)就是子組件傳遞過(guò)來(lái)的值,在本案例中就是我們輸入的值
代碼
Father.vue
<template> <div class="box2"> <Son @Accept="Result"></Son> <h1>Father: 子組件傳遞過(guò)來(lái)的值是 ---{{ 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="請(qǐng)輸入您想傳遞的值" @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>
到此這篇關(guān)于分享Vue組件傳值的幾種常用方式(二)的文章就介紹到這了,更多相關(guān)Vue組件傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue項(xiàng)目使用高德地圖的定位及關(guān)鍵字搜索功能的實(shí)例代碼(踩坑經(jīng)驗(yàn))
這篇文章主要介紹了vue項(xiàng)目使用高德地圖的定位及關(guān)鍵字搜索功能的實(shí)例代碼,也是小編踩了無(wú)數(shù)坑總結(jié)出來(lái)的經(jīng)驗(yàn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03vue elementui table編輯表單時(shí)彈框增加編輯明細(xì)數(shù)據(jù)的實(shí)現(xiàn)
在Vue項(xiàng)目中,通過(guò)使用Element UI框架實(shí)現(xiàn)表單及其明細(xì)數(shù)據(jù)的新增和編輯操作,主要通過(guò)彈窗形式進(jìn)行明細(xì)數(shù)據(jù)的增加和編輯,有效提升用戶交互體驗(yàn),本文詳細(xì)介紹了相關(guān)實(shí)現(xiàn)方法和代碼,適合需要在Vue項(xiàng)目中處理復(fù)雜表單交互的開(kāi)發(fā)者參考2024-10-10vue封裝自定義指令之動(dòng)態(tài)顯示title操作(溢出顯示,不溢出不顯示)
這篇文章主要介紹了vue封裝自定義指令之動(dòng)態(tài)顯示title操作(溢出顯示,不溢出不顯示),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Vue中調(diào)用組件使用kebab-case短橫線命名法和使用大駝峰的區(qū)別詳解
這篇文章主要介紹了Vue中調(diào)用組件使用kebab-case(短橫線)命名法和使用大駝峰的區(qū)別,通過(guò)實(shí)例可以看出如果是在html中使用組件,那么就不能用大駝峰式寫(xiě)法,如果是在.vue?文件中就可以,需要的朋友可以參考下2023-10-10vue圓形進(jìn)度條環(huán)形進(jìn)度條組件內(nèi)部顯示圖片示例
這篇文章主要為大家介紹了vue圓形進(jìn)度條環(huán)形進(jìn)度條組件內(nèi)部顯示圖片示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11vue3+ts中定義ref變量,設(shè)置變量類(lèi)型方式
這篇文章主要介紹了vue3+ts中定義ref變量,設(shè)置變量類(lèi)型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03詳解vue2.0的Element UI的表格table列時(shí)間戳格式化
本篇文章主要介紹了詳解vue2.0的Element UI的表格table列時(shí)間戳格式化,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-06-06