Ember 및 Ember-data : 저장소가로드되고 / 또는 관련보기가 다시 렌더링되면 콜백을 설정하는 방법은 무엇입니까?
-
13-11-2019 - |
문제
에 이크 및 ember-data를 사용하여 사용자 정의 어댑터 내의 FindAll 호출을 사용하여 REST API에서 몇 백 오브젝트를로드합니다.FindAll을 참조하는 ArrayController.Content를 사용하고 최근에 eMber를 추가했습니다.선택 위젯 / 드롭 다운 메뉴에서 객체를 표시하려면 선택하십시오.모든 객체 (각 객체가 선택 옵션)로 완전히 렌더링되면 선택한 위젯에서 함수를 실행해야합니다. 특히 chosen.js 라이브러리 .
이벤트에 콜백을 사용하여 선택에서 수백 개의 객체를 처리하기 위해 조간 (2-4 초)이 필요하기 때문에 ember.select.dInsertElement 및 Ember.ArrayController.ContentDidChange가 꽤 작동하지 않습니다.그들은 둘 다 너무 빨리 불을 지폈습니다.그렇다면 다른 이벤트가 있거나 대신 사용할 수있는 또 다른 방법이 있습니까?
해결책
DS.RESTAdapter.findQuery
는 대답입니다!DS.RESTAdapter.findAll
메소드와 달리, 앱의 어느 위치에서나 관찰 할 수있는 isLoaded 에 적절하게 DS.AdapterPopulatedModelArray
를 생성하고 반환합니다!
예 :
.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')
});