Могу ли я передать объект javascript обратно на страницу atk4? - PullRequest
0 голосов
/ 15 октября 2011

Со страницы ATK4 я могу вызвать jqplot, используя вспомогательный файл javascript, такой как

на странице

   $chart = $p->add('jqplot', null, 'chart1');
   $chart->setSeries(array(10,20,15));

определить jqplot.php как это

class jqplot extends View {
  function render()
  {
    $plot=$this->js(true)->univ()->jqplot($this->series, $this->opts);
    parent::render();
    return $this;
  }
}

и в файле помощника js свяжите вызов php с javascript

$.each({
 jqplot: function(series, opts){
   console.log('jqplot series',series);
   console.log('jqplot options',opts);
   $plot=$.jqplot(this.jquery.attr("id"), series, opts);
   return $plot;   
 }

}

Если у меня есть одна диаграмма на странице и перезагрузить ее с помощью вызова ajaxec, она работает нормально, но если у меня есть несколько диаграмм рядом друг с другом, только первая будет в порядке, а та, что рядом с ней, полностью исчезнет, ​​если я позвоню перезагрузить.

Что я действительно хочу сделать, так это вызвать на графике функцию реплотирования jqplot и передать ей новые данные со страницы, но как я могу это сделать? Объект $ plot в jshelper содержит объект javascript, и мне нужен этот объект для вызова replot.

Я думаю, что, может быть, я смогу сохранить объект при первом создании в ассоциативном массиве javascript, а затем, когда я вызываю replot, ищу идентификатор и, если найден, вызываю replot для объекта, но не уверен, как выглядит этот код или иметь правильный подход, поэтому любая помощь приветствуется.

Заранее благодарим за помощь.

1 Ответ

1 голос
/ 16 октября 2011

Наверное, было бы довольно сложно добиться этого.Сначала вам нужно правильно обработать уничтожение jqPlot.Вам понадобится правильный виджет jQuery UI, способный восстановить все через деструктор.Тогда вы можете заставить его работать.

Что касается Agile Toolkit, он уничтожает элемент, содержащий ваш jqPlot, с использованием JavaScript, перезагружает HTML и повторно выполняет JavaScript.

...