当前位置: 首页 > 知识库问答 >
问题:

VUE 3chart.js数据从api升级,但图表没有渲染

阳勇
2023-03-14

vue 3 Chartjs未从API动态呈现数据

目前,我正在开发vue 3,我是新来的。我添加了一个图表从官方chartjs留档我添加了图表的数据栏从API和它的工作正常一切都呈现但每当我尝试更新相同的数据栏到另一个字段它不是呈现图表但图表接收数据但不是渲染

这是来自API的JSON数据

[{"ward":1,"maleCount":3,"femaleCount":1,"otherCount":1,"disableCount":0}, 
{"ward":2,"maleCount":0,"femaleCount":0,"otherCount":0,"disableCount":0}, 
{"ward":3,"maleCount":0,"femaleCount":0,"otherCount":0,"disableCount":0}, 
{"ward":4,"maleCount":0,"femaleCount":0,"otherCount":0,"disableCount":0},

这就是我调用api的方式

 mounted() {
    this.getData();
  },

method:{
getData() {
      axios
        .get("api/v1/household/dashboard/getDetailByGharMuli")
        .then((res) => {
          this.data = res.data;
          this.wardCount = this.data.length;
          console.log(this.wardCount);
          let i = 0;
          let j = 0;
          for (i = 0; i < this.data.length; i++) {
            this.mdata.push(this.data[i].maleCount);
            this.Fdata.push(this.data[i].femaleCount);
            this.Odata.push(this.data[i].otherCount);
          }
          for (j = 1; j <= this.wardCount; j++) {
            this.llabels.push("Ward" + j);
          }
          this.barChart();
        })
        .catch((err) => {
          console.error(err);
        });
    },
barChart() {
      var Chart = require("chart.js");
      new Chart(document.getElementById("bar-chart-grouped"), {
        type: "bar",
        data: {
          labels: this.llabels,
          datasets: [
            {
              label: "पुरुष जनसंख्या",
              backgroundColor: "rgba(0, 143, 251, 0.8)",
              data: this.mdata,
            },
           {
              label: "महिला जनसंख्या",
              backgroundColor: "rgba(0, 227, 150, 0.8)",
              data: this.Fdata,
            },
            {
              label: "पअन्य जनसंख्या",
              backgroundColor: "rgb(255, 69, 96,0.8)",
              data: this.Odata,
            },
          ],
        },
      });
    },
}

我想根据Ward 1从上面的JSON数据更新数据,但每当我从API更新数据时,图表都会接收数据,但不会呈现数据

setDataBywardID(data) {
      axios
        .get("api/v1/household/dashboard/getGenderCountAccordingToWard/" + data)
        .then((res) => {
          this.wardData = res.data;
          console.log(this.wardData);
          this.llabels = "total population";
          this.mdata = this.wardData.maleCount;
          console.log(this.mdata);
          this.Fdata = this.wardData.femaleCount;
          console.log(this.Fdata);
          this.Odata = this.wardData.otherCount;
          this.barChart();
        })
        .catch((err) => {
          console.log(err);
        });
    },

共有1个答案

竺承望
2023-03-14

通常,当您试图更新图表时,不会每次都调用new chart

您应该在创建图表时保存它(将chart:null添加到data),然后您可以在调用条形图函数时检查它是否存在。

阅读更新图表

大概是这样的:

barChart() {
    var Chart = require("chart.js");
    var options = {
        type: "bar",
        data: {
            labels: this.llabels,
            datasets: [
            {
                label: "पुरुष जनसंख्या",
                backgroundColor: "rgba(0, 143, 251, 0.8)",
                data: this.mdata,
            },
            {
                label: "महिला जनसंख्या",
                backgroundColor: "rgba(0, 227, 150, 0.8)",
                data: this.Fdata,
            },
            {
                label: "पअन्य जनसंख्या",
                backgroundColor: "rgb(255, 69, 96,0.8)",
                data: this.Odata,
            }]
        }
    };

    if(!chart)
        this.chart = new Chart(document.getElementById("bar-chart-grouped"), options);
    else
    {
        this.chart.options = options;
        this.chart.update();
    }
}
 类似资料:
  • 我正在将grails应用程序从grails 2.5.4升级到3.1.9,我在ajax调用方面遇到了问题。 我有gsp模板在我的应用程序中使用ajax请求从服务器异步加载数据。这里是其中一个。 下面的javascript调用激活ajax请求。 这将成功调用以下控制器操作。 直到这一刻,一切都按预期进行。比它应该呈现以下gsp模板,但它没有。该属于它的地方空着,控制台没有错误 我不得不重新将资源插件中

  • 问题内容: 我已经在Google Store中有一个应用程序。我正在使用具有3个表的内置数据库,并在应用程序首次启动时将其复制。现在,我想升级到该应用程序并添加另一个表。下面是我的代码。 我想问几个问题。上面的代码未升级。 现在,如果我是该应用程序的新用户,是否需要编辑旧数据库并制作另一个CKRecording表,并用放置在资产中的当前数据库替换该数据库,或者上述代码也适用于新用户? 问题答案:

  • 我们正在尝试将SpringFox2.0升级到3.0的Open API规范。但是当我们使用''url生成open doc时,它显示的版本为2.0。不确定为什么版本仍然指向旧版本。 我们正在使用springboot应用程序 我按照以下步骤按照spring fox文档进行升级 [http://springfox.github.io/springfox/docs/current/][1] “2.1.3.从

  • 我在PHPmyadmin中的查询有结果,但在C#中,a.read()不返回数据。

  • 介绍 本文档提供了从 Vant 2 到 Vant 3 的升级指南。 升级步骤 1. 升级 Vue 3 Vant 3 是基于 Vue 3 开发的,在使用 Vant 3 前,请将项目中的 Vue 升级到 3.0 以上版本。 2. 处理不兼容更新 Vant 2 到 Vant 3 存在一些不兼容更新,请仔细阅读下方的不兼容更新内容,并依次处理。 不兼容更新 组件命名调整 GoodsAction 商品导航组

  • 如果你正在运行Gogs 0.9.146以下版本,你可以平滑的升级到Gitea。该升级需要如下的步骤: 停止 Gogs 的运行 拷贝 Gogs 的配置文件 custom/conf/app.ini 到 Gitea 的相应位置。 拷贝 Gitea 的 options/ 到 Home 目录下。 如果你还有更多的自定义内容,比如templates和localization文件,你需要手工合并你的修改到 Gi