我有一个组件,有时被用作父级的子级,有时没有任何父级。
此组件发出一个特定的事件,该事件要么被父级(如果已订阅)捕获,要么我想由该组件本身来处理。
因此,在运行时,如何以编程方式检查
if (someone is listening to the event){
let them catch and handle it
}else {
let's handle it by our own
}
答案 0 :(得分:2)
这似乎是一个有问题的设计,但这使您可以检查传递给组件的侦听器:
this.$listeners;
它返回父作用域事件侦听器。参见the doc here。
特别是针对您的用例:
// To check whether the "myEvent" event is listened to
if (this.$listeners.myEvent){
// let them catch and handle it
} else {
// let's handle it by our own
}
答案 1 :(得分:0)
您可以从父母那里传递布尔型道具。
在父组件中:
<Child :isParent='true'></Child>
在子组件中:
props : {
isParent : Boolean
},
methods : {
actionEvent : function(){
if(this.isParent){
// Emit event
}
else{
// Take care over here.
}
}
}