0

複数の線でグラフを表示する必要があります。

残りの API から 3 つのシグナル値をフェッチし、それらすべてを取得するまで待ってから、グラフをレンダリングする必要があります。

私は待つ方法を知っています:

this.scores = new ActivityScore();
var that = this;
this.scores.on("change", function(model) {
    console.log(model.attributes);
    that.configuration.series =[{
                    name: 'Activity',
                    data: graphMappers.toGraphSerie(model)}]
            });
this.scores.fetchFromDate("myDate");

JQuery $.when の新しい機能は非常に興味深いものです。backbone.Model と組み合わせて試してみたいと思います。

そのようなものはいいでしょう:

$.when(scores1.fetchFromDate("myDate"),scores2.fetchFromDate("myDate"),graph.render())
4

1 に答える 1

0

誰かが私のアプローチよりもクリーンなものを持ってくるのを待っていました。

私の頭に浮かぶ唯一の解決策は、終了するたびに信号を送信し、どこかでカウントfetch()を維持し、数値が具体的な数値に達したときに待機コードを実行することです。

よりエレガントにするには、次を使用できますEvent Aggregator

// code simplified and no tested
var App = {}
App.NumScores = 3;
App.counter = 0;

App.eventAggregator = _.extend({}, Backbone.Events);
App.eventAggregator.on( "app:addCounter", App.addCounter );

App.addCounter = function (){
  App.counter ++;
  if( App.counter == App.NumScores ){
    App.eventAggregator.trigger( "app:scoresFetched" );
    App.counter = 0;
  }
}

オプションまたはその他のオプションを使用できるApp.eventAggregator.trigger( "app:addCounter" )いずれかを終了したらいつでも呼び出すことができます。また、グラフをレンダリングするためにリッスンする必要があります。fetch()successApp.eventAggregator.on( "app:scoresFetched", <your callback> )

于 2012-08-10T21:53:01.257 に答える