Dygraphs setVisibility столбца

Я пытаюсь изменить видимость столбцов Dygraph GVizChart.

Это работает:

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
    });
  }

Также это работает:

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
            visibility: [false, true, true, true]
    });
  }

Но внутри drawChart, после этого кода, когда я добавляю следующие строки,

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
    });
    window.chart1.setVisibility(0, true);
    window.chart1.setVisibility(1, false);
  }

Я получаю сообщение об ошибке: Uncaught TypeError: Cannot call method 'setVisibility' of undefined. drawChart

Прочитав этот вопрос, я подумал, может быть, chart1 не готов к моменту выполнения. Поэтому я добавил эту функцию:

    function showChange() {
        alert('show chart1:' + window.chart1);
        window.chart1.setVisibility(3, false);
    }

  <a href="#" onclick='showChange();return false;'>showChange</a>

Но когда я нажимаю на ссылку showChange, я получаю ту же ошибку: Uncaught TypeError: Cannot call method 'setVisibility' of undefined
И в окне предупреждения написано show chart1: undefined


person trante    schedule 06.03.2013    source источник


Ответы (1)


new Dygraph.GVizChart() возвращает объект. .draw() нет.

Вы хотите что-то большее, например:

window.chart1 = new Dygraph.GVizChart(document.getElementById('dygraphs'));
window.chart1.draw(data, {});

Вы также столкнетесь с проблемами, потому что оболочка dygraphs GViz не имеет метода setVisibility(). Вам нужно будет получить доступ к базовому объекту Dygraph, чтобы ваш код работал:

function showChange() {
    alert('show chart1:' + window.chart1);
    window.chart1.date_graph.setVisibility(3, false);
}
person danvk    schedule 08.03.2013