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

当我们初始化完数据后,需要更新数据时,虽然请求成功,获取到新的数据。但是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}&type=${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>

思路:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值