基于这个问题 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);
}
});
原文由 Sauron 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
binding.value
而不是像这样: