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;   
 }

}

ページに 1 つのグラフがあり、ajaxec 呼び出しでそれをリロードすると正常に動作しますが、複数のグラフが隣り合っている場合、最初のグラフのみが問題なく、リロードを呼び出すとその隣のグラフが完全に消えます。

私が本当にやりたいことは、チャートで 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 に答える