0

これは修正できない可能性がありますが、誰かが以前にこれに遭遇し、回避策を見つけたことを願っていました.

Highcharts-ng は、シリーズの順序を維持できないような方法で、シリーズ データを既存のデータとマージしているようです。具体的には、左から右に 2 つのシリーズを表示し、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 に答える