【问题标题】:chart.js 2.7.1 | Updating charts with variables图表.js 2.7.1 |使用变量更新图表
【发布时间】:2018-01-10 05:45:37
【问题描述】:

我正在尝试在我的网站上使用 chart.js。但是我在更新时遇到了一些问题。

HTML:

  <a href="#" class="date-select" data-chart="dishesChart" data-period="day">day</a>
  <a href="#" class="date-select" data-chart="dishesChart" data-period="week">week</a>
  <a href="#" class="date-select" data-chart="dishesChart" data-period="month">month</a>

  <canvas id="dishesChart" style="width: 100%;"></canvas>

JS:

var dishesChartCanvas = document.getElementById("dishesChart");

var dayDataset = {
   datasets: [{
     data: [1, 2, 3, 4, 5]
   }],

   labels: [
     some data array
   ]
};

// here comes same variables for week and month datasets


var dishesChart = new Chart(dishesChartCanvas, {
  type: 'pie',
  data: dayDataset, // default
  options: dishesChartOptions
});

问题是: 此代码有效:

$('.date-select').on('click', function(e) {
  e.preventDefault();
  dishesChart.data.datasets[0].data = monthDataset.datasets[0].data;
  dishesChart.data.labels = monthDataset.labels;
  dishesChart.update();
});

但是这段代码给出了 Uncaught TypeError: Cannot read property

$('.date-select').on('click', function(e) {
  e.preventDefault();
  var chartname = $(this).data("chart");
  var period = $(this).data("period") + "Dataset";
  chartname.data.datasets[0].data = period.datasets[0].data;
  chartname.data.labels = period.labels;
  chartname.update();
});

我是 JS 和 jQuery 的新手,所以请告诉我我做错了什么。

谢谢!

UPD:已修复

默认数据属性是字符串,要将其转换为对象,您应该添加 window[var_name]:

问题:

var chartname = $(this).data("chart");

解决方案:

var chartname = window[$(this).data("chart")];

【问题讨论】:

  • 请在 StackOverflow 中添加您的解决方案作为答案
  • @beaver 更新

标签: javascript jquery chart.js chart.js2


【解决方案1】:
var chartname = window[$(this).data("chart")];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多