2013-05-10 48 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是你實現你自己,或者如果您使用的是圖書館的東西,這樣的承諾可能會爲您提供一些開箱什麼的,你會使用灰燼自己實現的。敬請回復。

相關問題