昨天寫程序,無意中遇到了vue子件向父組件傳值的一個坑里,在此記錄一下,提醒來人。
子組件觸動父組件的事件傳參,子組件如下:
<template>
<div class="btncom">
<van-button type="default" @click="clearorder()">清空</van-button>
</van-popup>
</div>
</template>
<script>
export default {
methods: {
clearorder() {
this.$emit("getorderList", { flg: "1" });
}
}
};
</script>
父組件如下:
<template>
<get-order
ref="getorders"
@closeTip="getorder"
v-if="getoderflg"
@getorderList="getPendingOrderList()"//都是()惹的禍
></get-order>
</div>
</template>
<script>
export default {
methods: {
getPendingOrderList(obj) {
if(obj){
if(obj.flg=="1"){
this.getoderflg=true;
}
}
}
});
}
},
</script>
執行一下,obj為undefined, 為什么,仔細看了一遍,原來問題出在了
@getorderList="getPendingOrderList()"//都是()惹的禍 ()身上。
1.不使用圓括號,event被自動當作實參傳入。去掉(),問題解決。
2.使用圓括號,必須顯式的傳入event對象,如果不傳入可能最終找到的是全局的window .event。
@getorderList="getPendingOrderList($event)",問題解決。
