Javascript 角度海图重画

Javascript 角度海图重画,javascript,angularjs,highcharts,Javascript,Angularjs,Highcharts,如何在angular highcharts指令中触发重画?问题是我将图表包含在一个选项卡中,它初始化得很糟糕。像这样: 如果我调整窗口的大小,它会为所选选项卡实例修复自身,但我需要在加载时以某种方式这样做 Application.controller('SalesReportsHistoryController', ['ServerActions', '$scope', 'initData', function( ServerActions, $scope, initData ){ v

如何在angular highcharts指令中触发重画?问题是我将图表包含在一个选项卡中,它初始化得很糟糕。像这样:

如果我调整窗口的大小,它会为所选选项卡实例修复自身,但我需要在加载时以某种方式这样做

Application.controller('SalesReportsHistoryController', ['ServerActions', '$scope', 'initData', function( ServerActions, $scope, initData ){

    var history = this;

    history.initData = initData.data;

    $scope.$on('$viewContentLoaded', function () {
        $(window).resize(function () {
            console.log('resized!');
        });

        $(window).resize();
    });

... etc more code

这是我尝试过的,但没有骰子。resize事件会触发,如果我在控制台中触发它,它会按照我的预期工作,但不会加载。

我想您可以完全控制数据,并准确地知道数据何时可用。如果答案是“是”,则可以在highcharts指令上添加ng If指令,以触发重新绘制

<div ng-if="showChart">
    <highchart></highchart>
</div>


然后在控制器中,可以根据图表数据的可用性将$scope.showChart设置为true或false。如果这不起作用,您可以始终在$scope.showChart上设置一个超时,以便只有在呈现整个DOM后才为真。

如果可能,是否最好解决该问题,而不是强制调整图表的大小/重画?或者您应该能够将内部选项
chart.isDirtyBox
设置为
true
(如果需要)并调用
chart.
。所以每次我隐藏/显示容器时都会重新绘制图表?因为在我将容器初始化为hiddenIn之前,你的方法并没有完全起作用。一个简短的回答,是的。每次将容器重新添加到DOM时,图表都会重新绘制(容器的操作会自动触发重新绘制)。这实际上并不是那么糟糕,因为将来您可能会添加一个微调器或加载图标,并且很容易将其挂钩。