0

从 ATK4 页面,我可以使用这样的 javascript 帮助文件调用 jqplot

在页面上

   $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 调用重新加载它,它可以正常工作,但如果我有多个图表彼此相邻,则只有第一个是好的,如果我调用 reload,它旁边的一个完全消失。

我真正想做的是在图表上调用 jqplot replot 函数并从页面传递新数据,但我该怎么做呢?jshelper 中的 $plot 对象包含一个 javascript 对象,我需要这个对象来调用它的 replot。

我在想也许我可以在第一次在 javascript 关联数组中创建对象时存储该对象,然后当我调用 replot 时,查找 id,如果找到,则在对象上调用 replot 但不确定这段代码是什么样的或者我是否有权利方法所以任何帮助表示赞赏。

提前感谢您的帮助。

4

1 回答 1

1

要做到这一点可能会非常困难。首先,您需要正确处理 jqPlot 的破坏。您将需要一个适当的 jQuery UI 小部件,该小部件能够通过解构器恢复所有内容。然后你可能会让它工作。

就 Agile Toolkit 而言,它使用 JavaScript 销毁包含您的 jqPlot 的元素,重新加载 HTML 并重新执行 JavaScript。

于 2011-10-15T20:10:03.417 回答