一个页面多个el-carousel时页面定时器混乱
时间: 2023-08-14 20:06:05 浏览: 96
如果一个页面有多个 `el-carousel`,那么这些 `el-carousel` 可能会出现定时器混乱的问题,因为它们都会使用一个全局的计时器。为了解决这个问题,可以在每个 `el-carousel` 上都设置一个独立的定时器。
下面是一个示例代码,演示如何为每个 `el-carousel` 设置独立的定时器:
```
<template>
<div>
<el-carousel :interval="carousel1Interval" @change="handleCarousel1Change">
<!-- carousel1 content here -->
</el-carousel>
<el-carousel :interval="carousel2Interval" @change="handleCarousel2Change">
<!-- carousel2 content here -->
</el-carousel>
</div>
</template>
<script>
export default {
data() {
return {
carousel1Interval: 5000, // carousel1 interval in milliseconds
carousel2Interval: 7000, // carousel2 interval in milliseconds
carousel1Timer: null, // carousel1 timer
carousel2Timer: null, // carousel2 timer
};
},
mounted() {
this.startCarousel1Timer(); // start carousel1 timer
this.startCarousel2Timer(); // start carousel2 timer
},
methods: {
handleCarousel1Change() {
this.resetCarousel1Timer(); // reset carousel1 timer on change
},
handleCarousel2Change() {
this.resetCarousel2Timer(); // reset carousel2 timer on change
},
startCarousel1Timer() {
this.carousel1Timer = setInterval(() => {
// do something for carousel1
}, this.carousel1Interval);
},
startCarousel2Timer() {
this.carousel2Timer = setInterval(() => {
// do something for carousel2
}, this.carousel2Interval);
},
resetCarousel1Timer() {
clearInterval(this.carousel1Timer);
this.startCarousel1Timer();
},
resetCarousel2Timer() {
clearInterval(this.carousel2Timer);
this.startCarousel2Timer();
},
},
};
</script>
```
在上面的示例代码中,我们为每个 `el-carousel` 添加了一个 `interval` 属性,用于指定其定时器的间隔时间。我们还为每个 `el-carousel` 添加了一个 `@change` 事件处理程序,在轮播项发生更改时重置其定时器。
在 `mounted` 生命周期钩子中,我们调用了 `startCarousel1Timer` 和 `startCarousel2Timer` 方法,分别为每个 `el-carousel` 启动独立的定时器。
最后,我们还添加了 `resetCarousel1Timer` 和 `resetCarousel2Timer` 方法,用于重置每个 `el-carousel` 的定时器。这些方法使用 `clearInterval` 函数清除当前定时器,然后调用 `startCarousel1Timer` 和 `startCarousel2Timer` 方法重新启动定时器。
阅读全文