2

残り火を使用せずにjqPlotオブジェクトを更新および再描画する方法を知っています...

「問題」を示すために次のフィドルを作成しました:http://jsfiddle.net/QNGWU/

ここで、の関数load()App.graphStateController毎秒呼び出され、コントローラーのコンテンツの系列データを更新します。

最初の問題:シリーズの更新がビューに反映されていないようです。

2番目の問題:たとえそうだとしても、プロットを更新するためにどこに電話をかけることができますか(つまりplotObj.drawSeries())?

didInsertElement私はすでにビューの関数にオブザーバーを登録しようとしました:

didInsertElement : function() {
  var me = this;
  me._super();
  me.plotObj = $.jqplot('theegraph', this.series, this.options);
  me.plotObj.draw();
  me.addObserver('series', me.seriesChanged);    
},
seriesChanged: function() {
  var me = this;
  if (me.plotObj != null) {
    me.plotObj.drawSeries({});
  }
}

しかし、それはうまくいきませんでした...

4

1 に答える 1

1

まあ、それを理解しました、更新されたフィドルを参照してください。

秘訣は、graphStateオブジェクト全体(プロパティだけでなく)を更新することでしたApp.graphStateController

var newState = App.GraphState.create();
newState.set('series', series);
me.set('content', newState);

App.graphStateViewそして、 :でそれにオブザーバーをアタッチします。

updateGraph : function() {
  [...]
}.observes('graphState')

updateGraphjqPlotのデータ系列は[x、y]ペアとして格納されるため、この関数はきれいではありません。

全体的な問題は、プロパティとオブジェクト自体が派生していないため、イベントが発生しないことだったとseries思います。別の解決策は、それをに変更することかもしれません。optionsApp.graphStateEmber.objectEmber.objects

于 2012-12-29T12:07:22.323 に答える