<template>
<div>
<div ref="main" style="width: 600px; height: 400px"></div>
</div>
</template>
<script>
import * as echarts from "echarts";
export default {
data() {
return {
myChart: null,
data: [],
intervalId: null,
};
},
mounted() {
this.initChart();
},
beforeDestroy() {
// 清除定时器
if (this.intervalId) {
clearInterval(this.intervalId);
this.intervalId = null;
}
// 销毁echarts实例
if (this.myChart) {
this.myChart.dispose();
this.myChart = null;
}
},
methods: {
initChart() {
this.myChart = echarts.init(this.$refs.main);
var currentIndex = -1;
var data = [];
for (var i = 0; i < 100; i++) {
data.push([i, 5]);
}
let option = {
xAxis: {
type: "value",
min: 0,
max: 100,
},
yAxis: {
type: "value",
},
series: [
{
type: "line",
data: data,
showSymbol: false,
symbolSize: 0,
lineStyle: {
opacity: 0,
},
markPoint: {
itemStyle: {
color: "red",
},
symbolSize: 10,
data: [
{
coord: data[0],
},
],
},
},
],
};
this.myChart.setOption(option);
// 更新标记点函数使用箭头函数以保持正确的this引用
const updateMarkPoint = () => {
currentIndex = (currentIndex + 1) % data.length;
this.myChart.setOption({
series: [
{
markPoint: {
data: [
{
coord: data[currentIndex],
},
],
},
},
],
});
};
// 存储定时器ID以便清除
this.intervalId = setInterval(updateMarkPoint, 100);
},
},
};
</script>
07-20
6372

07-30
4699
