在el-tabs里添加个ref,删去el-tab-pane里的 :name绑定,然后在mounted里添加代码
mounted() {
this.$nextTick(() => {
this.$refs.你在el-tabs定义的ref名称.$refs.nav.$nextTick(() => {
// 此时tab的nav才渲染dom 否则拿不到el-tabs__item
var target = document.getElementsByClassName("el-tabs__item");
let that = this;
for (let i = 0; i < target.length; i++) {
target[i].addEventListener("mouseover", () => {
that.$refs.你在el-tabs定义的ref名称.handleTabClick(1, String(i));
});
}
});
});
},
这样会出现HTMLCollection数组中的数据无法获取问题
解决方案
- 方法1 使用setTimeout函数
//设置300ms后执行
setTimeout(function () {
let target = document.getElementsByClassName('el-tabs__item is-left')
let that = this as any
for (let i = 0; i < target.length; i++) {
console.log(target[i], i)
target[i].addEventListener('mouseover', () => {
that.$refs.navTabs.handleTabClick(1, String(i))
})
}
}, 300)
- 方法2 等待加载 html 元素
window.addEventListener('load', () => {
let target = document.getElementsByClassName('el-tabs__item is-left')
let that = this as any
for (let i = 0; i < target.length; i++) {
console.log(target[i], i)
target[i].addEventListener('mouseover', () => {
that.$refs.navTabs.handleTabClick(1, String(i))
})
}
})
})