我正在使用Ember和Ember数据从REST API加载几百个对象,使用自定义适配器中的findAll调用。我有一个引用findAll的ArrayController.content,然后使用recently added Ember.Select在select小部件/下拉菜单中显示对象。一旦完全呈现所有对象(每个对象都是select的选项),我需要在select小部件上运行一个函数 - 特别是Chosen.js library。
因为处理select中的几百个对象需要一些时间(2-4秒),所以在事件Ember.Select.didInsertElement和Ember.ArrayController.contentDidChange上使用回调不太有用;他们都很快开火。那么是否可以使用另一种事件或另一种方法呢?
答案 0 :(得分:9)
DS.RESTAdapter.findQuery
就是答案!与DS.RESTAdapter.findAll
方法相比,它创建并返回DS.AdapterPopulatedModelArray
,它具有正确的 isLoaded ,您可以在应用中的任何位置观察到它!
例如:
App.store = DS.Store.create({
adapter: DS.RESTAdapter.create()
});
App.set('MyItemList', App.store.findQuery(App.Item, 'homepageList'));
App.MyView = Ember.View.extend({
refresh: function () {
console.log('finished loading custom list');
}.observes('App.MyItemList.isLoaded')
});