0

这可能无法修复,但我希望有人之前可能遇到过这个问题并找到了解决方法。

Highcharts-ng 似乎将系列数据与现有数据合并在一起,以至于我无法保持系列的顺序。我特别想展示两个系列,从左到右分别称为 A 和 B(因为表单控件是这样组织的)。

所以,我从 A 系列开始,然后我添加一个 B,然后更改A,现在它的顺序是 B 和 A。

我查看了 highcharts-ng 代码,我可以理解它发生的原因(参见下面的 processSeries 方法)。

我能够开始工作的唯一解决方法是完全重置系列数据并调用 $apply,这当然不能在另一个应用的中间进行。

$scope.chartConfig.series.length = 0
$scope.chartConfig.xAxis.categories.length = 0
$scope.$apply(); # force update with empty series (throws $apply already in progress error)

我真的很想知道是否有我可以设置的选项,或者其他一些解决方法可以让我按照自己的意愿使用它,而不必求助于编辑指令。

var processSeries = function(chart, series) {
  var ids = []
  if(series) {
    ensureIds(series);

    //Find series to add or update
    series.forEach(function (s) {
      ids.push(s.id)
      var chartSeries = chart.get(s.id);
      if (chartSeries) {
        chartSeries.update(angular.copy(s), false);
      } else {
        chart.addSeries(angular.copy(s), false)
      }
    });
  }

非常感谢!

4

1 回答 1

0

回答我自己的问题。似乎解决方法是将系列的占位符放在固定位置,并进行更新而不是替换,例如:

$scope.chartConfig.series[0].data = [1,2,3]
$scope.chartConfig.series[0].name = 'foo'
$scope.chartConfig.series[1].data = [4,5,6]
$scope.chartConfig.series[1].name = 'bar'

甚至做类似的事情:

$scope.chartConfig.series[0] = {name: 'foo', data: [1,2,3]}
$scope.chartConfig.series[1] = {name: 'bar', data: [4,5,6]}

导致上述订购问题。

于 2014-03-03T12:34:38.910 回答