5

我正在使用 Ember 和 Ember-data 从 REST API 加载几百个对象,使用自定义适配器中的 findAll 调用。我有一个引用 findAll 的 ArrayController.content,然后使用最近添加的 Ember.Select在选择小部件/下拉菜单中显示对象。一旦使用所有对象(每个对象都是选择的一个选项)完全呈现选择小部件后,我需要在选择小部件上运行一个函数 - 特别是Chosen.js 库

因为处理选择中的几百个对象需要一点时间(2-4 秒),所以在事件 Ember.Select.didInsertElement 和 Ember.ArrayController.contentDidChange 上使用回调不太有效;他们都开得太早了。那么是否有另一个事件或另一种方法可以用来代替?

4

1 回答 1

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')
});
于 2012-03-05T15:09:32.473 回答