Javascript 为什么addEventListener不执行

Javascript 为什么addEventListener不执行,javascript,vue.js,Javascript,Vue.js,我正在使用Vue.js框架,我正在尝试编写一个演示,我想知道为什么我的代码中没有执行addEventListener函数 这适用于浏览器: _initEvents(el, attr, callback) { this.$el.querySelectorAll(el).forEach(item => { if (item.hasAttribute(attr)) { callback(item, item.getAttribute(attr))

我正在使用Vue.js框架,我正在尝试编写一个演示,我想知道为什么我的代码中没有执行
addEventListener
函数

这适用于浏览器:

 _initEvents(el, attr, callback) {
    this.$el.querySelectorAll(el).forEach(item => {
        if (item.hasAttribute(attr)) {
            callback(item, item.getAttribute(attr))
        }
    })
}
_compile() {
    this._initEvents('*', '@click', (item, key) => {
        console.log(item)
        item.addEventListener('click', ()=> {
            console.log('yes')
        }, false);
    })
}
当I
console.log(item)
时,浏览器控制台可以按
yes
,因此该函数确实存在,并且按钮位于DOM中


为什么不能
项。addEventListener
执行并打印“是”?

在Vue渲染后,“@click”属性将不再存在于DOM中。 尝试其他属性

<button @click="test" new:click >yes</button>  

this._initEvents('*', 'new:click', (item, key) => {
    console.log(item)
    item.addEventListener('click', ()=> {
        console.log('yes')
    }, false);
});
是
此._initEvents('*','新建:单击',(项目,键)=>{
console.log(项目)
item.addEventListener('单击',()=>{
console.log('yes')
},假);
});

我认为,如果您提供更多关于您正在尝试做的事情的背景信息,可能会有所帮助,因为乍一看,这似乎是Vue的一种非常奇怪的用法。
@click
属性仅在Vue初始化之前存在于DOM模板中。使用
新Vue(…)
启动Vue后,这些DOM元素都将被丢弃,
@单击
将不会出现在DOM Vue生成中。哦,对不起,我没有说清楚。嗯,我不想使用Vue,我想学习Vue的来源,所以,我尝试编写Vue。第一步是实现
新的Vue(…)
,这是initEvents(…)的init click事件函数。遍历所有Dom以查找have
@单击
属性,获取Dom,并将事件添加到Dom中,例如
item.addEventListener(…)
。重点不是关于
@click
属性,而是为什么我让这个dom使用本机js添加click事件,这个addEventListener是没有用的。我可以控制台这个dom是
,这个find dom是正确的。因为它是一个保留关键字。嗯,不是。这是因为Vue不支持动态添加或删除Vue属性。