使用angular-chart.js中的chart-dataset-override选项

Uri*_*nti 6 chart.js

我正在撰写预算管理申请表,我正在使用angular-chart.js.

我想使用数据集来覆盖初始数据(主要是为了向图表添加新数据,并为每个条形图,标签等提供不同的颜色),并根据数据的值设置标签和颜色.目前,我试图做硬编码,但只有第一个值是覆盖.

这是我正在使用的代码:

angular.module("app2", ["chart.js"]).controller("MixedChartCtrl",
function($scope) {
    $scope.colors = ['#45b7cd', '#ff6384', '#ff8e72'];

    $scope.labels = ['', ''];
    $scope.data = [65, 11];
    $scope.datasetOverride = [

        {
            label: 'Override Series A',
            borderWidth: 1,
            type: 'bar',
            data: [345]
        },
        {
            label: "Bar chart1",
            borderWidth: 1,
            type: 'bar',
            data: [45]
        }

    ];
});
Run Code Online (Sandbox Code Playgroud)

小智 5

希望您的问题是,您想要每个单独的数据(对于每个条形)填充颜色/标签/某些内容。

当您有两个数据集时,将使用上面(您的)代码片段。当必须为所有数据设置相同的属性值时,
所有这些数据集属性都将接受String ,并且当您想要为同一数据集中的不同数据设置不同的属性值时,它们也将接受Array[String] 。(如下所示)。

$scope.data = [65,11];
$scope.datasetOverride = [
{
  label: ['something', 'otherthing'],
  borderWidth: [1,2],
  backgroundColor: ['#FF4242','#2291ff']
}
]
Run Code Online (Sandbox Code Playgroud)

所以现在我明白您可能会动态添加数据。
所以你必须将数据推送到DATASET中,如下所示:

$scope.data.push(345);
Run Code Online (Sandbox Code Playgroud)

因此,如果您想为这些设置不同的属性,您需要推送属性(数组)。

$scope.datasetOverride[0][label].push('someother thing');
$scope.datasetOverride[0][borderWidth].push(2);
$scope.datesetOverride[0][backgroundColor].push('#46bfb8');
Run Code Online (Sandbox Code Playgroud)

这将在之前的栏旁边添加一个带有新颜色/标签/等的栏。

我希望我理解你的问题,这会有所帮助。