Ember.js - 延迟更新,直到ajax调用完成

时间:2013-05-10 22:21:40

标签: ember.js

在等待缓慢的AJAX调用完成时,不显示未加载的中间结果的推荐模式是什么?

E.g。我有一些像这样的控制器代码:

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

当应用程序正在等待该函数返回某些数据时,它会将页面内容设置为空对象。

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

2 个答案:

答案 0 :(得分:1)

承诺是一个很好的模式。

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

你没有说ModelObject#find是你自己实现的,或者你是否使用了库,所以承诺可能是开箱即用的东西,或者你自己使用Ember实现的东西。 RSVP。

答案 1 :(得分:0)

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

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

我不确定但是这可能会遗漏一些代码,以便在加载后移除观察者,这是使用addObserver的大多数示例。

如果在addObserver注册到对象之前更新了该属性,我也不确定是否会触发它。