0

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

例如,我有一些这样的控制器代码:

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

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

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

4

2 回答 2

1

Promise 是一个很好的模式。

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

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

于 2013-05-11T21:17:04.827 回答
0

我是这样实现的(加载新对象时这是在我的控制器内部):

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

我不确定,但这可能会丢失一些代码来在加载后删除观察者,这是大多数使用示例addObserver所做的。

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

于 2013-05-10T23:00:43.777 回答