2013-05-10 50 views
0

在等待慢速AJAX调用完成时,不显示未加载中间结果的推荐模式是什么?Ember.js - 延迟更新,直到ajax调用完成

E.g.我有一些控制器代码:

this.set('content', function() { Model.find(/* return some long running operation */) }); 

虽然应用程序正在等待该函数返回一些数据它设置页的一个空对象的内容。

理想情况下,如果已经加载的内容将保持显示,直到新内容准备好呈现。达到此目的的最佳方式是什么?

回答

0

我实现了这个像这样(这是我的控制器中加载新的对象时):

var _this = this; 
search = App.ModelObject.find(...); 
search.addObserver('property_that_exists_on_loaded_+object', function (search) { 
    _this.set('content', search); 
}); 

我不知道,但这可能会丢失一些代码,它加载后删除其观察员是大多数使用addObserver做的例子。

我也不确定这是否会失败,如果该属性更新之前addObserver注册对象。

1

承诺是一个很好的模式。

var _this = this; 
App.ModelObject.find(...).then(function(results){ 
    _this.set('content', results) 
} 

你不说,如果ModelObject#find是你实现你自己,或者如果您使用的是图书馆的东西,这样的承诺可能会为您提供一些开箱什么的,你会使用灰烬自己实现的。敬请回复。