Vue子級(jí)如何向父級(jí)傳遞數(shù)據(jù)(自定義事件)
前言
在上一篇文章中,說(shuō)到了父級(jí)向子級(jí)組件中傳遞對(duì)應(yīng)的數(shù)據(jù)信息,以及增加傳遞數(shù)據(jù)的類型現(xiàn)在、默認(rèn)值填充等規(guī)則。
Vue組件數(shù)據(jù)傳遞與props校驗(yàn)
但使用props
只能是單向的數(shù)據(jù)傳遞,也就是由外層父級(jí)向內(nèi)層子級(jí)傳遞,并不能反向進(jìn)行數(shù)據(jù)傳遞。
如何實(shí)現(xiàn)子級(jí)組件向父級(jí)組件傳遞數(shù)據(jù)呢?
子級(jí)向父級(jí)傳遞數(shù)據(jù)實(shí)現(xiàn)
在vue的官網(wǎng)中,給定一個(gè)方式實(shí)現(xiàn),即子級(jí)組件中使用this.$emit("自定義方法名",參數(shù))
的方式,向父級(jí)中進(jìn)行數(shù)據(jù)傳遞。
測(cè)試流程如下:
- 1、子級(jí)組件中定義動(dòng)態(tài)數(shù)據(jù),定義按鈕與按鈕的點(diǎn)擊事件。
- 2、子級(jí)中的方法具體實(shí)現(xiàn),使用
this.$emit("自定義方法名",參數(shù))
注冊(cè)新的事件,并傳遞數(shù)據(jù)值。 - 3、父級(jí)組件中,引用自己組件,并使用
@自定義方法名
監(jiān)聽子級(jí)自定義事件。 - 4、父級(jí)組件中指定具體的邏輯方法,處理數(shù)據(jù)并顯示。
代碼如下所示:
- 子級(jí)組件中定義動(dòng)態(tài)數(shù)據(jù),定義按鈕與按鈕的點(diǎn)擊事件。
- 創(chuàng)建自定義事件,并傳遞數(shù)據(jù)信息。
ChildComponentEvent.vue
<template> <div class="contChild"> <h1>子級(jí)組件</h1> <button @click="transToFatherMsg">點(diǎn)擊向父級(jí)組件傳值</button> </div> </template> <script> export default{ data(){ return{ message:"子級(jí)組件--》專注寫bug 愛(ài)吃香蕉" } }, methods:{ transToFatherMsg(){ console.log("子級(jí)組件中的點(diǎn)擊事件"); /** * 自定義事件 * 參數(shù)一:自定義事件名稱 * 參數(shù)二:自定義事件傳參 */ this.$emit("childEvent",this.message); } } } </script> <style scoped> .contChild{ border: 1px blue solid; } </style>
父級(jí)引用子級(jí)組件,并針對(duì)自定事件回傳值做處理。
- ParentComponentEvent.vue
<template> <div class="cont"> <h1>父級(jí)組件</h1> <p>收到子級(jí)組件數(shù)據(jù):{{ getMsg }}</p> <!-- 引入子級(jí)組件,并申明監(jiān)聽方法 @子級(jí)組件注冊(cè)自定義方法名 --> <ChildComponentEvent @childEvent="getChildMsg"/> </div> </template> <script> // 引入子級(jí)組件 import ChildComponentEvent from './ChildComponentEvent.vue'; export default{ data(){ return{ getMsg:"" } }, components:{ // 注冊(cè)子級(jí)組件 ChildComponentEvent }, methods:{ getChildMsg(data){ // 子級(jí)自定義方法觸發(fā)后的具體執(zhí)行邏輯 console.log("父級(jí)接收子級(jí)組件數(shù)據(jù)傳遞"); // 賦值 this.getMsg = data; } } } </script> <style scoped> .cont{ border: 1px red solid; } </style>
瀏覽器效果展示
剛進(jìn)頁(yè)面,剛渲染成功時(shí)。
點(diǎn)擊按鈕后。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端+接口請(qǐng)求實(shí)現(xiàn)vue動(dòng)態(tài)路由
在Vue應(yīng)用中,結(jié)合前端和后端接口請(qǐng)求實(shí)現(xiàn)動(dòng)態(tài)路由,可根據(jù)用戶權(quán)限動(dòng)態(tài)生成路由,提高安全性與靈活性,本文就來(lái)介紹一下前端+接口請(qǐng)求實(shí)現(xiàn)vue動(dòng)態(tài)路由,感興趣的可以了解一下2024-09-09Vue.set()動(dòng)態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法
今天小編就為大家分享一篇Vue.set()動(dòng)態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue清空數(shù)組的幾個(gè)方式(小結(jié))
本文主要介紹了vue清空數(shù)組的幾個(gè)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12不能通過(guò)IP地址訪問(wèn)VUE項(xiàng)目的問(wèn)題及解決
這篇文章主要介紹了不能通過(guò)IP地址訪問(wèn)VUE項(xiàng)目的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法
這篇文章主要給大家介紹了關(guān)于vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法,Vue3是目前前端開發(fā)中非常流行的框架之一,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06el-table表格動(dòng)態(tài)合并行及合并行列實(shí)例詳解
在使用el-table的時(shí)候經(jīng)常會(huì)涉及到表格的列合并,包括表格操作列的合并,下面這篇文章主要給大家介紹了關(guān)于el-table表格動(dòng)態(tài)合并行及合并行列的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10