2012-01-24 5 views
5

사용자 정의 어댑터 내에서 findAll 호출을 사용하여 REST API에서 수백 개의 객체를로드하기 위해 Ember 및 Ember-data를 사용하고 있습니다. findAll을 참조하는 ArrayController.content를 가지고 있으며, 그 다음에 recently added Ember.Select을 사용하여 선택 위젯/드롭 다운 메뉴에 객체를 표시합니다. 모든 객체 (각 객체가 선택의 옵션 임)로 완전히 렌더링되면 선택 위젯에서 함수를 실행해야합니다. 특히 Chosen.js library.Ember 및 Ember-data 사용 : 저장소로드가 완료 될 때 콜백을 설정하거나 연결된 뷰의 렌더링을 다시 완료하는 방법?

select에서 수백 개의 개체를 처리하는 데 약간의 시간이 걸리기 때문에 Ember.Select.didInsertElement 및 Ember.ArrayController.contentDidChange 이벤트는 콜백을 사용하여 작동하지 않습니다. 그들은 둘 다 너무 빨리 불을 붙인다. 대신 다른 이벤트 또는 다른 접근법을 사용할 수 있습니까?

답변

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') 
});