0
点赞
收藏
分享

微信扫一扫

vue使用echarts是,动态获取数据,动态更新图表数据。

小_北_爸 2022-03-12 阅读 60

当我们初始化完数据后,需要更新数据时,虽然请求成功,获取到新的数据。但是echarts的图表没有根据数据更新而更新,原因是数据更新了,但echarts还是初始化时的那个。

我们可以在请求成功后,重新初始化echarts。这样图表就能根据数据进行变化了。

         <div id="first-line-left" style="height: 220px;width: 500px">
</div>

<div class="first-left-input">
<el-input v-model.number="pie_count" placeholder="输入50-300的数字"></el-input>
</div>
<el-button type="warning" @click="pie_submit(0,pie_count)">提交</el-button>

效果图是这个。

我设计的功能是:

1、进来时,就有默认的数据展示出来。

2、在input框中输入数字,提交到后端,获取到特定数据条数,更新图表。

函数设置

 export default {
name: 'LogAnalyse',
data () {
return {
pie_count: '',//绑定输入框
pie_data: [], //后端数据可以保存到这里

}
},
mounted () {
this.firstleft()
},

methods: {
//饼状图
firstleft (type=0,number=100) {
//获取数据
let pie_data = this.get_pie_data(type,number)
pie_data.then(res => {
this.pie_data = res.data.data
this.pie_leng = res.data.lenth
let myChart = echarts.init(document.getElementById('first-line-left'))
// 绘制图表
var option = {
title: { text: '告警类型占比' },
series: [
{
type: 'pie',
data: this.pie_data
}
]
}

myChart.setOption(option)
})
// 基于准备好的dom,初始化echarts实例

},

//请求函数,这里使用同步请求,才能将后端返回的数据给echarts使用
get_pie_data (pie = 0, number = 100) {
return new Promise((resolve, reject) => {
axios({
url: this.$settings.base_url + `/user/logdata/?number=${number}${pie}`,
method: 'post'
}).then(res => {
resolve(res)
}).catch(error => {
reject(error)
})
})
},

//点击提交的时候,触发这个函数
pie_submit (pie = 0, number = 100) {
console.log(this.pie_count, 123)
if (Number.isInteger(number)) {
if (number <= 300 && number >= 10) {
this.firstleft(pie,number)
} else {
this.$message.error('范围需要在50-300之间')
}
} else {
this.$message.error('输入的是非数字!!')
}
},

},

}
}
</script>

思路:

 

举报

相关推荐

0 条评论