我尝试在Vue的全局'on‘指令中添加一个'clickaway’事件,以便在Vue模板中使用它,如下所示:
<div v-on:clickaway="someMethod">
</div>所以JavaScript应该看起来像这样:
import Vue from 'vue';
Vue.directive('on', {
// Default 'On' functionality here
// My method that checks if 'clickaway' has been passed in as an argument
});这有可能吗?
编辑:
为了有希望地阐明我要做的事情,我目前已经在一个指令中让它按照我想要的方式工作:
Vue.directive('clickaway', {
bind(element, { expression }, { context }) {
element.clickAwayEvent = event => {
if (!(element === event.target || element.contains(event.target))) {
context[expression](event);
}
};
document.body.addEventListener('click', element.clickAwayEvent);
},
unbind(element) {
document.body.removeEventListener('click', element.clickAwayEvent);
},
});和标记:
<div v-clickaway="closeDropdown"></div>但我希望能够这样写,而不是在自定义指令中:
<div v-on:clickaway="closeDropdown"></div>发布于 2021-04-19 05:28:09
正如MichalLev and回答的那样,我试图做的事情是不可能的,最好的替代方案是使用指令方法。
https://stackoverflow.com/questions/67149663
复制相似问题