在 2.1.6/Chart.js 中将全局选项传递给折线图

Passing Global Options to line Chart in 2.1.6/Chart.js

这是我的 jsfiddle,解释了我面临的问题。我想基本上传递选项对象(以禁用填充和贝塞尔曲线),就像我在旧版本中所做的那样...

https://jsfiddle.net/xjdvngwe/

基本上我想实现将一个选项传递给图表 创建图表时的功能

var options = { fill:false,tension:0, lineTension :0.1};
var chart_testChart = new Chart.Line(ctx, 
    { 
        data: data, 
        options: options 
    });

在最新的 2.1.6 版本中,我无法使用它

如果我这样传递它们,它们工作正常,但我正在寻找一种方法将它们作为选项对象传递

var data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
    {
        label: "My First dataset",
        fill: false,
        lineTension: 0.1,

这是因为你误解了图表的构建方式:

您假设 filltension 属性都直接位于选项的根目录中,但实际上它们位于 options.element.line 中。

有关详细信息,请查看有关 element configuration 的 Chart.js 文档(滚动直到 线路配置 在您的案例中).


但是要小心!!不要混淆:

  • 通过编辑传递给图表数据的数据集来编辑一个元素(正如您在问题的第二部分所做的那样):

    datasets: [
    {
        label: "My First dataset",
        fill: false,
        lineTension: 0.1,
        // ...
    }]
    
  • 通过编辑图表选项编辑相同类型的所有元素(此处为折线图):

    var options = { elements: { line: { /*options */ } } };
    

    正如我在上面给出的 documentation 中所述:

    Options can be configured for four different types of elements; arc, lines, points, and rectangles. When set, these options apply to all objects of that type unless specifically overridden by the configuration attached to a dataset.

因此,在直接在选项中编辑这些属性之前,请确保您确实想要编辑所有折线图。


现在,如果您仍想在选项中进行编辑,则必须像这样构建 options 变量:

var options = { elements: { line: { fill: false, tension: 0.1 } } };
var chart_testChart = new Chart.Line(ctx, 
{ 
    data: data, 
    options: options 
});

这里有working fiddle想看结果