我需要显示多行图表。
我需要从rest 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())
答案 0 :(得分:0)
我一直在等着,看看有人带来的东西比我的方法更清洁。
我想到的唯一解决方案是发送一个信号 evey时间,你完成一个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()
之后拨打success
,即可使用App.eventAggregator.on( "app:scoresFetched", <your callback> )
选项或其他任何内容。您还应该听{{1}}来呈现图。