基于这个问题Detect click outside element和这个答案https://stackoverflow.com/a/42389266,我试图将指令从Vue 2迁移到Vue 3.binding.expression
和vnode.context
似乎不存在了.我该怎么做?
app.directive('click-outside', {
beforeMount (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
if (!(el === event.target || el.contains(event.target))) {
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent);
},
unmounted (el) {
document.body.removeEventListener('click', el.clickOutsideEvent);
}
});