这可能是不可修复的,但我希望有人可能之前遇到过此问题,并找到了解决方法。
Highcharts-ng似乎将系列数据与现有数据合并,使得我无法维持系列的排序。我特意要展示两个系列,称它们为A& B,从左到右(因为表单控件以这种方式组织)。
所以,我从A系列开始,然后我添加一个B,然后更改 A,现在它按顺序B&甲
我查看过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)
}
});
}
非常感谢!
答案 0 :(得分: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]}
导致上述订购问题。