昨天写程序,无意中遇到了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)",问题解决。