2014-09-03 1 views
1

Мне необходимо преобразовать параметры для дополнительных карт в JSON string. И я действительно борюсь с этим.Highcharts Опции для стробирования JSON

Потому что у этого есть cuircual структура.

Пример: http://jsfiddle.net/8TEKD/

Ну я и пытался decycle его с Дуглас Крокфорд cycle.js: https://github.com/douglascrockford/JSON-js

Если я пытаюсь decycle это я получаю эту StackTrace

'Attr.ownerElement' is deprecated and has been removed from DOM4 (http://w3.org/tr/dom). cycle.js:92 
'Attr.textContent' is deprecated. Please use 'value' instead. cycle.js:92 
'Attr.nodeValue' is deprecated. Please use 'value' instead. cycle.js:92 
'HTMLHtmlElement.manifest' is deprecated. The manifest attribute only has an effect during the early stages of document load. cycle.js:92 
InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('checkbox') does not support selection. 

Ну мне нужно, это потому, что я хочу сохранитьконфигурации моей диаграммы и загрузить ее позже с этой конфигурацией.

Есть ли способ сделать это?

Благодаря

ответ

3

Проблема заключается в том, что $('#container').highcharts(options); добавляет renderTo элемент к вашему объекту, который является элементом DOM. Прежде чем это будет добавлено, у вас нет циклической структуры. И, если вы действительно хотите сохранить свои параметры конфигурации для использования снова, сохранение элемента DOM, который они отображаются на этот раз, вам не подходит.

Я рекомендовал бы сохранение JSON, прежде чем создать диаграмму:

$(function() { 
    var options = { 

     chart: { 
      marginRight: 120 
     }, 

     legend: { 
      align: 'right', 
      verticalAlign: 'top', 
      x: 0, 
      y: 100 
     }, 

     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 

     series: [{ 
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
     }] 
    }; 
    jsonstring = JSON.stringify(options); 

    $('#container').highcharts(JSON.parse(jsonstring)); // just to prove it works, obviously you would use the options variable here 

}); 

http://jsfiddle.net/6y2gg6oy/

Но, если это не вариант, вы можете использовать JSON.stringify «s replacer возможность исключить части объекта объектов, который вам не нужен. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON#The_replacer_parameter

+0

Спасибо за хороший ответ, я думаю, это то, что я делаю прямо сейчас. В моем случае это немного сложнее, потому что я пытаюсь построить динамическую диаграмму, которая обновляет и изменяет настройку. Но я определил некоторые методы обновления, которые обновляют мою собственную конфигурацию, которая затем будет преобразована в JSON, сохранена и загружена снова. –

Смежные вопросы