在angular-chart.js模块中更改宽度和高度

时间:2015-09-18 09:29:10

标签: javascript angularjs chart.js angular-chart

我正在使用角度模块angular-chart.js。它很简单,非常聪明。但我注意到我无法更改图表的widthheight。在某处,我已经知道我必须按如下方式定义图表的大小:

var vm = $scope;
vm.labels = [];
vm.data = [];

CrudService.getData(selDate).$promise.then(
     function (response) {
       angular.forEach(response, function (val) {
          val.datum = $filter('date')(val.datum, 'dd.MM.yyyy');
          vm.labels.push(val.datum);
          vm.data.push(val.grade);
       });

       vm.dataChart = [vm.data];

       /* This is the important part to define the size */
       vm.options = [
         {
            size: {
               height: 200,
               width: 400
            }
         }
       ];
       /************************************************/
    });

观点:

<canvas id="bar" 
        class="chart chart-bar" 
        chart-data="dataChart"
        chart-labels="labels"
        chart-click="onClick"
        chart-options="options">
</canvas>

有谁知道如何在angular-chart.js中定义widthheight

5 个答案:

答案 0 :(得分:11)

好的我已经尝试过这个解决方案并且有效。

        <canvas id="bar"
                height="100"
                width="100"
                class="chart chart-bar" 
                chart-data="dataChart"
                chart-labels="labels"
                chart-click="onClick"
                chart-options="options">
        </canvas>

或者将大小定义为CSS类中的样式。

答案 1 :(得分:6)

您也可以将<canvas>打包成<div>,如下所示:

<div style="height:300px;width:300px;">
    <canvas
            class="chart chart-radar"
            chart-data="$ctrl.data"
            chart-options="options"
            chart-labels="$ctrl.labels"></canvas>
</div>

在其他答案中设置widthheight并不适用于我。

答案 2 :(得分:4)

要根据屏幕大小定义图表的高度,我使用以下代码:

在控制器

$scope.height_chart = window.innerHeight*0.7;

在模板中

<canvas height="{{height_chart}}" class="chart chart-line" data="weight.data" labels="weight.labels" series="weight.series"></canvas>

我希望这些代码会有所帮助。

答案 3 :(得分:1)

问题是高度和宽度属性值存储在图表中,并且不会以与其他属性相同的方式更新。要解决此问题,您必须向create事件添加一个侦听器,并手动更改图表对象中的高度

HTML:

<canvas
    id="chart"
    class="chart chart-horizontal-bar"
    chart-data="chart.data"
    chart-labels="chart.data.labels"
    chart-series="chart.series"
    chart-options="chart.options"
    chart-colors="chart.colors"
    height="{{ compareChart.height }}"
    width="{{ compareChart.width }}"
></canvas>

JS:

$scope.$on('chart-create', function (event, chart) {
    chart.chart.height = $scope.chart.height;
});

您希望在AJAX查找期间更改$scope.chart.height或者会引入新数据。

答案 4 :(得分:0)

图表使用其父容器更新画布的渲染和显示大小。但是,此方法要求容器相对放置并且仅专用于图表画布。然后可以通过设置容器尺寸的相对值来实现响应性