javascript – 更改Highcharts主题(部分工作)

前端之家收集整理的这篇文章主要介绍了javascript – 更改Highcharts主题(部分工作)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,改变它们为高图.我创建了一个数组来保存所有主题,并尝试通过select事件更改它们.
  1. var highcharts_theme = [];
  2.  
  3. /* Default theme */
  4. highcharts_theme.push({});
  5.  
  6. /* Dark Blue theme */
  7. highcharts_theme.push({
  8. colors: ["#DDDF0D","#55BF3B","#DF5353","#7798BF","#aaeeee","#ff0066","#eeaaee","#aaeeee"],chart: {
  9. backgroundColor: {
  10. linearGradient: [0,250,500],stops: [
  11. [0,'rgb(48,48,96)'],[1,'rgb(0,0)']
  12. ]
  13. },.... Shortened for brevity.....

我的代码改变主题是:

  1. $('#theme-type').selectmenu({ width: 200 }).change(function (e) {
  2. var themeIndex = parseInt($('#theme-type').val());
  3. Highcharts.theme = highcharts_theme[themeIndex];
  4. // Apply the theme
  5. highchartsOptions = Highcharts.setOptions(Highcharts.theme);
  6. });

我所遇到的问题是,如果我转向Skies主题,那么这是很好的,但随后改为任何其他主题,天空背景与主题的其他元素一起保持.

有没有人知道完全重置主题的正确方法

谢谢

解决方法

每当你设置一个主题时,它会与现有的主题相融合,因此任何选项都不会出现在新的主题中,它将从现有的主题中挑选出来.这可能不总是需要.

不幸的是,Highcharts没有提供返回在第一次加载时设置的默认值的选项.以下代码可用于获取功能

  1. // Make a copy of the defaults,call this line before any other setOptions call
  2. var HCDefaults = $.extend(true,{},Highcharts.getOptions(),{});
  3.  
  4. function ResetOptions() {
  5. // Fortunately,Highcharts returns the reference to defaultOptions itself
  6. // We can manipulate this and delete all the properties
  7. var defaultOptions = Highcharts.getOptions();
  8. for (var prop in defaultOptions) {
  9. if (typeof defaultOptions[prop] !== 'function') delete defaultOptions[prop];
  10. }
  11. // Fall back to the defaults that we captured initially,this resets the theme
  12. Highcharts.setOptions(HCDefaults);
  13. }

重置主题后,应用新的主题就像这是应用的第一个主题一样.

Demo @ jsFiddle

猜你在找的JavaScript相关文章