我想從舊版API使用Ember CLI加載數據,這似乎不適合使用Ember數據。這些數據通常會在頁面加載時加載,然後在整個應用程序的許多地方重新使用。我創建了一個服務「legacy_data」這個:你可以用emberjs推遲延期服務嗎?
import Ember from 'ember';
export default Ember.Service.extend({
ready: null,
legacy_data: null,
init(){
this.ready = Ember.$.ajax(...).done(function(legacy_data){
this.set('legacy_data', legacy_data);
}
computed_attr: Ember.computed('legacy_data', function(){ ... },
...more functions and computed attributes
});
因爲「初始化」功能似乎並不支持返回一個承諾(路線上喜歡的模型鉤子一樣),每當我想使用這項服務,我必須做這樣的事情:
injected_service.ready.then(function(legacy_data){
... use service
});
這在實踐中意味着我結束了我的代碼庫一大堆額外的承諾處理 - 這種感覺就像我在游泳針對目前就這一個。
有沒有更好的方法來做到這一點?也許是一個生命週期鉤子或一個支持延遲服務初始化的工廠/初始化器,這樣我就不必擔心我的代碼庫中的其他任何地方了。初始化器是否支持這個?我沒有看到它的任何例子。是否有解決此問題的另一種方法? (Ember的數據必須以某種方式處理這個相同的問題,但我對這個框架很陌生,所以我不確定)
謝謝你的幫助。