Vue子級如何向父級傳遞數(shù)據(jù)(自定義事件)
前言
在上一篇文章中,說到了父級向子級組件中傳遞對應(yīng)的數(shù)據(jù)信息,以及增加傳遞數(shù)據(jù)的類型現(xiàn)在、默認(rèn)值填充等規(guī)則。
Vue組件數(shù)據(jù)傳遞與props校驗(yàn)
但使用props只能是單向的數(shù)據(jù)傳遞,也就是由外層父級向內(nèi)層子級傳遞,并不能反向進(jìn)行數(shù)據(jù)傳遞。
如何實(shí)現(xiàn)子級組件向父級組件傳遞數(shù)據(jù)呢?
子級向父級傳遞數(shù)據(jù)實(shí)現(xiàn)
在vue的官網(wǎng)中,給定一個方式實(shí)現(xiàn),即子級組件中使用this.$emit("自定義方法名",參數(shù))的方式,向父級中進(jìn)行數(shù)據(jù)傳遞。
測試流程如下:
- 1、子級組件中定義動態(tài)數(shù)據(jù),定義按鈕與按鈕的點(diǎn)擊事件。
- 2、子級中的方法具體實(shí)現(xiàn),使用
this.$emit("自定義方法名",參數(shù))注冊新的事件,并傳遞數(shù)據(jù)值。 - 3、父級組件中,引用自己組件,并使用
@自定義方法名監(jiān)聽子級自定義事件。 - 4、父級組件中指定具體的邏輯方法,處理數(shù)據(jù)并顯示。
代碼如下所示:
- 子級組件中定義動態(tài)數(shù)據(jù),定義按鈕與按鈕的點(diǎn)擊事件。
- 創(chuàng)建自定義事件,并傳遞數(shù)據(jù)信息。
ChildComponentEvent.vue
<template>
<div class="contChild">
<h1>子級組件</h1>
<button @click="transToFatherMsg">點(diǎn)擊向父級組件傳值</button>
</div>
</template>
<script>
export default{
data(){
return{
message:"子級組件--》專注寫bug 愛吃香蕉"
}
},
methods:{
transToFatherMsg(){
console.log("子級組件中的點(diǎn)擊事件");
/**
* 自定義事件
* 參數(shù)一:自定義事件名稱
* 參數(shù)二:自定義事件傳參
*/
this.$emit("childEvent",this.message);
}
}
}
</script>
<style scoped>
.contChild{
border: 1px blue solid;
}
</style>父級引用子級組件,并針對自定事件回傳值做處理。
- ParentComponentEvent.vue
<template>
<div class="cont">
<h1>父級組件</h1>
<p>收到子級組件數(shù)據(jù):{{ getMsg }}</p>
<!-- 引入子級組件,并申明監(jiān)聽方法 @子級組件注冊自定義方法名 -->
<ChildComponentEvent @childEvent="getChildMsg"/>
</div>
</template>
<script>
// 引入子級組件
import ChildComponentEvent from './ChildComponentEvent.vue';
export default{
data(){
return{
getMsg:""
}
},
components:{ // 注冊子級組件
ChildComponentEvent
},
methods:{
getChildMsg(data){ // 子級自定義方法觸發(fā)后的具體執(zhí)行邏輯
console.log("父級接收子級組件數(shù)據(jù)傳遞");
// 賦值
this.getMsg = data;
}
}
}
</script>
<style scoped>
.cont{
border: 1px red solid;
}
</style>瀏覽器效果展示
剛進(jìn)頁面,剛渲染成功時。

點(diǎn)擊按鈕后。

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端+接口請求實(shí)現(xiàn)vue動態(tài)路由
在Vue應(yīng)用中,結(jié)合前端和后端接口請求實(shí)現(xiàn)動態(tài)路由,可根據(jù)用戶權(quán)限動態(tài)生成路由,提高安全性與靈活性,本文就來介紹一下前端+接口請求實(shí)現(xiàn)vue動態(tài)路由,感興趣的可以了解一下2024-09-09
Vue.set()動態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法
今天小編就為大家分享一篇Vue.set()動態(tài)的新增與修改數(shù)據(jù),觸發(fā)視圖更新的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法
這篇文章主要給大家介紹了關(guān)于vue3路由跳轉(zhuǎn)params傳參接收不到的解決辦法,Vue3是目前前端開發(fā)中非常流行的框架之一,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
el-table表格動態(tài)合并行及合并行列實(shí)例詳解
在使用el-table的時候經(jīng)常會涉及到表格的列合并,包括表格操作列的合并,下面這篇文章主要給大家介紹了關(guān)于el-table表格動態(tài)合并行及合并行列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10

