Javascript 为什么addEventListener不执行
我正在使用Vue.js框架,我正在尝试编写一个演示,我想知道为什么我的代码中没有执行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))
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);
})
}
当Iconsole.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属性。