Javascript 是否可以将自定义事件添加到Vue 2';s';在';指令?

Javascript 是否可以将自定义事件添加到Vue 2';s';在';指令?,javascript,vuejs2,Javascript,Vuejs2,我试图将“clickaway”事件添加到Vue的全局“on”指令中,以便在Vue模板中使用它,如下所示: 所以JavaScript看起来像这样: 从“Vue”导入Vue; Vue.指令('on'{ //此处的默认“打开”功能 //检查“clickaway”是否已作为参数传入的方法 }); 这有可能吗 编辑: 为了有希望地阐明我的目的,我目前已经在指令中以我希望的方式实现了这一点: Vue.directive('clickaway'{ 绑定(元素,{expression},{context}

我试图将“clickaway”事件添加到Vue的全局“on”指令中,以便在Vue模板中使用它,如下所示:


所以JavaScript看起来像这样:

从“Vue”导入Vue;
Vue.指令('on'{
//此处的默认“打开”功能
//检查“clickaway”是否已作为参数传入的方法
});
这有可能吗

编辑:

为了有希望地阐明我的目的,我目前已经在指令中以我希望的方式实现了这一点:

Vue.directive('clickaway'{
绑定(元素,{expression},{context}){
element.clickAwayEvent=事件=>{
if(!(element==event.target | | element.contains(event.target))){
上下文[表达](事件);
}
};
document.body.addEventListener('click',element.clickAwayEvent);
},
解除绑定(元素){
document.body.removeEventListener('click',element.clickAwayEvent);
},
});
以及标记:


但我希望能够这样编写,而不是在自定义指令中:



正如米哈列夫所回答的那样,我试图做的是不可能的,最好的选择是采用指导性方法;您是在尝试向每个
div
添加自定义(合成)事件,还是真的需要挂接到Vue的事件逻辑中,以便在任何事件触发时运行一些代码?使用
v-on
语法侦听本机dom元素上的自定义事件没有任何限制。请注意,本机dom元素上的自定义事件不同于上面链接的自定义组件事件(另请参见)。@MichalLevý不是我想要的-clickaway事件是唯一的,因为它需要所有组件都可以访问,因此典型的emit to parent->listen for event范例并不真正合适。我过去的做法是使用一个事件总线向一个不可见的覆盖组件发送消息,该组件将侦听单击以显示,并保存一个单击事件,如果单击该事件,该事件将自动关闭,但这有点混乱。目前,我已经使用了一个指令(例如v-clickaway),我可以在任何地方使用它,但我正在尝试使语法与任何其他指令的语法相同event@chipit24希望我以上的回答能澄清一些问题。你的链接绝对是我想要的;然而,我不确定它是否完全解决了我的问题。我正在寻找根Vue实例来侦听从代码中任何位置触发的自定义事件,该实例使用一个处理程序来检查我分配事件的下拉组件是否为目标,如果不是,则触发我传入的方法。因此,组件上的代码将在此处标记为
,Vue将识别何时执行clickaway代码您无法“扩展”现有指令(如“v-on”)。此外,Vue事件不会冒泡为标准浏览器事件。如果对你有效,只需使用
v-clickaway
方法。。。