Vue -- 数据更新echarts表格不更新问题
项目使用的是 vue-element-admin
<template>
<div>
<div ref="line" :class="className" :style="{height:height,width:width}" />
</div>
</template>
<script>
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from '../../mixins/resize'
export default {
mixins: [resize],
props: {
className: {
type: String,
default: "chart"
},
width: {
type: String,
default: "100%"
},
height: {
type: String,
default: "350px"
},
autoResize: {
type: Boolean,
default: true
},
lineChartData: {
type: Object,
required: true
}
},
data() {
return {
chart: null
};
},
mounted() {
this.$nextTick(() => {
this.initChart()
})
},
watch: {
lineChartData: {
deep: true,
handler(val) {
this.setOptions(val);
}
}
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart() {
this.chart = echarts.init(this.$refs.line, 'macarons')
// this.chart = echarts.init(this.$el, "macarons");
this.setOptions(this.lineChartData)
},
setOptions({ data, value, name } = {}) {
var max = value && value.length ? null : 100;
this.chart.setOption({
xAxis: {
data: data
// boundaryGap: false,
// axisTick: {
// show: false
// }
},
grid: {
left: 10,
right: '3%',
bottom: 20,
top: 30,
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
},
padding: [5, 10]
},
yAxis: {
max: max,
minInterval: 1,
axisTick: {
show: false
}
},
legend: {
data: [name]
},
series: [{
name: name,
itemStyle: {
normal: {
color: '#FF005A',
lineStyle: {
color: '#FF005A',
width: 2
}
}
},
smooth: true,
type: 'line',
data: value,
animationDuration: 2800,
animationEasing: 'cubicInOut'
}]
})
}
}
}
</script>
有些数据我的项目是一起给的,切换自己做的处理,如果不能直接赋值就使用this.$set设置data值
formatTab() {
// this.lineChartData.name = "收藏数";
this.$set(this.lineChartData, 'name', "收藏数" )
var name = "totalCollectNum";
switch (this.form.radio2) {
case "1":
// this.lineChartData.name = "收藏数";
this.$set(this.lineChartData, 'name', "收藏数" )
name = "totalCollectNum";
break;
case "2":
// this.lineChartData.name = "点赞数";
this.$set(this.lineChartData, 'name', "点赞数" )
name = "totalLikeNum";
break;
case "3":
// this.lineChartData.name = "阅读数";
this.$set(this.lineChartData, 'name', "阅读数" )
name = "totalReadNum";
break;
default:
// this.lineChartData.name = "收藏数";
this.$set(this.lineChartData, 'name', "收藏数" )
name = "totalCollectNum";
}
var value = [];
var data = [];
var tableData = this.list;
for (var i = 0; i < tableData.length; i++) {
// data.push( this.parseTime(new Date(tableData[i].recordDate), "{y}-{m}-{d}")) // 横坐标
data.push(tableData[i].recordDate); // 横坐标
value.push(tableData[i][name]);
}
// this.lineChartData.value = value;
// this.lineChartData.data = data;
this.$set(this.lineChartData, 'data', data )
this.$set(this.lineChartData, 'value', value )
},
分类:
vue2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理