Avec Ember et Ember-Data: Comment configurer un rappel lorsqu'un magasin est terminé le chargement et / ou lorsqu'une vue associée est terminée à nouveau?

StackOverflow https://stackoverflow.com/questions/8992984

  •  13-11-2019
  •  | 
  •  

Question

J'utilise des données Ember et Ember pour charger quelques centaines d'objets d'une API REST, en utilisant un appel Findall dans un adaptateur personnalisé. J'ai un arrayController.Content faisant référence à la fin a récemment ajouté Ember.Select Pour afficher les objets dans un widget de sélection / dropdown-menu. J'ai besoin d'exécuter une fonction sur le widget de sélection une fois qu'il est entièrement rendu avec tous les objets (chaque objet étant une option de sélection) - en particulier, le Bibliothèque choisie.js.

Parce qu'il faut un peu de temps (2-4 secondes) pour gérer les quelques centaines d'objets dans le Select, en utilisant des rappels sur les événements Ember.Select.DiDinsertElement et Ember.ArrayController.ContentDidChange ne fonctionnent pas tout à fait; Ils tirent tous les deux trop tôt. Y a-t-il donc un autre événement ou une autre approche, qui pourrait être utilisé à la place?

Était-ce utile?

La solution

DS.RESTAdapter.findQuery Est la réponse! Contrairement au DS.RESTAdapter.findAll Méthode, il crée et revient DS.AdapterPopulatedModelArray, qui a son propre est chargé correctement que vous pouvez observer n'importe où dans votre application!

Par exemple:

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')
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top