无法用highcharts更新Highcharts系列的点击事件
我正在使用angular.js和highcharts-ng(https://github.com/pablojim/highcharts-ng)来显示一组图表。 我需要根据另一个图表的点击事件来更新图表。 我可以在控制器中做所有我想做的事情,但是当我在click事件中有代码时(即使$ scope可用),我似乎无法在设置系列数据后重新绘制图表。 这在控制器的方法中工作正常。
我曾尝试使用$ apply,并在Highcharts.charts数组中查找图表对象以调用图表上的重绘,但它不起作用。 我注意到使用highcharts-ng实例化的图表与在JQuery样式中实例化的图表(例如Series.setData)似乎没有相同的功能。
从这个小提琴(http://jsfiddle.net/gregorydickson/mJjk2/):
var myapp = angular.module('myapp', ["highcharts-ng"]);
myapp.controller('myctrl', function ($scope) {
$scope.addSeries = function () {
$scope.highchartsNG.series = [{
data: [55, 33, 41, 23, 37]
}]
}
$scope.highchartsNG = {
options: {
chart: {
type: 'line'
}
},
series: [{data: [10, 15, 12, 8, 7]}],
title: {
text: 'Hello'
},
loading: false
}
$scope.highchartsNG2 = {
options: {
chart: {
type: 'line'
}
},
series: [{
data: [1, 2, 3, 8, 7],
events: {
click: function (e) {
alert("hit the click");
//this does not work!!
$scope.highchartsNG.series = [{
data: [11, 22, 33, 44, 33,22,11]}];
}
}
}],
title: {
text: 'Hello 2'
},
loading: false
}
});
HTML:
<div ng-app="myapp">
<div ng-controller="myctrl">
<button ng-click="addSeries()">Change Data</button>
<highchart id="chart1" config="highchartsNG"></highchart>
<highchart id="chart2" config="highchartsNG2"></highchart>
</div>
</div>
不是一个完美的,但你可以使用该解决方案:http://jsfiddle.net/mJjk2/14/
series: [{
data: [1, 2, 3, 8, 7],
events: {
click: function (e) {
angular.element('#myselector').trigger('click');
}
}
}],
但是如果你没有这样的按钮来触发,它将无法工作。 从开发工具我可以说, $watch()
不会从该回调调用(不知道为什么,这个插件的作者的好问题)。 注意:我不是角度专家;)
我的最终解决方案是创建我自己的指令,而不是使用highcharts-ng,并通过在Highcharts.charts [](数组)中获取图表来更新click事件中图表上的数据。
point: {
events: {
click: function(e) {
Highcharts.charts[2].setTitle({text:"Load Profile "+ formattedDate},{},false);
Highcharts.charts[2].series[0].setData(newday[0].values, false);
Highcharts.charts[2].series[1].setData(newday[0].temps, false);
Highcharts.charts[2].redraw();
链接地址: http://www.djcxy.com/p/88727.html
上一篇: Cannot update Highcharts series in click event with highcharts
下一篇: Testing Highcharts Line Charts Data Points using Selenium Webdriver