2017-08-28 89 views
0

我想发出一个标准JavaScript事件(除了Vue的事件),所以我有一个Vue的组件内部下面的代码:VUE:事件对象不可访问

<template> 
    <div> 
    <input 
     type="text" 
     class="input" 
     v-model.trim="value" 
     :id="id" 
     :placeholder="placeholder" 
     :disabled="disabled" 
     :required="required" 
     :readonly="readonly" 
     autocomplete="off" 
     @keyup="keyUp" 
     @focus="focus" 
     @click="click" 
     @dblclick="dblclick" 
     @change="change"> 
    </div> 
</template> 

<script> 
export default { 
    methods: { 
     change() { 
      // Vanilla event 
      let element = document.querySelector(`#${this.id}`); 
      let event = new Event('change', { 'bubbles': true, 'cancelable': false }); 

      element.dispatchEvent(event); 

      // Vue event 
      this.$emit('change'); 
     } 
    } 
} 
</script> 

不过,我得到以下参考香草的错误事件:

'Event' is not defined 

我在想什么?

+0

你正在使用哪种浏览器? –

+0

'Chrome版本60.0.3112.113' – Donnie

+0

需要触发自定义事件的原因是什么?如果你打开你的控制台,你可以手动创建事件吗? –

回答

-1

这是一种预感,但我怀疑这可能与订单有关。 Vue剥离它附着的元素内的事件侦听器。尝试在创建vue后附加所有事件侦听器。我们已经将vue与现有的JavaScript代码(包括事件监听器)高兴地共存。但我们不喜欢它,并且我们在摆脱旧的东西方面取得了良好的进展。 (你真的需要吗?)

+0

我在安装组件后添加新的侦听器,以便应该状态良好。不幸的是,我没有看到另一种解决方案,所以我认为我必须弄清楚这个问题。 – Donnie