javascript - 是否可以向 Vue 2 的“on”指令添加自定义事件?
问题描述
我正在尝试向 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>
解决方案
正如 MichalLevý 回答的那样,我试图做的事情是不可能的,最好的选择是采用指令方法。
推荐阅读
- android - 如何从全文中查找特定单词并使其超链接可使用 textview 单击?
- angular - Angular 6 中的剑道网格:isEditing:如何?
- php - 通过 curl 将数据发布到 api
- python-2.7 - 如何使用 python 和 rest API 调用将动态 VHD 上传到 Azure?
- scala - 数组列的火花聚合
- javascript - ajax响应显示为零
- python - Python 错误“线程 0x1 已以代码 0 (0x0) 退出。程序 'python.exe' 已以代码 0 (0x0) 退出。”
- javascript - 如何管理表格和javascript中的输入
- php - 如何在 php 的同一个复选框中插入和显示获取的值?
- php - 在 PHP 中使用 curl 从 URL 获取 HTML