2017-01-18 1 views
2
this.store.findAll('game').then(function(results){ 
    // RUN SOME OPERATION ON THEM 
}) 

modèle Ember Je voudrais savoir comment je peux jouer avec la variable résultats. Je comprends que je peux faireitérer sur une requête

results.get('firstObject') // returns the first object. 

Je voudrais savoir tout ce que je peux faire avec. Existe-t-il une documentation api pour la collection ?

Merci!

Répondre

6

De ember guides,

Les méthodes ci-dessous, retournera la promesse, il sera résolu à enregistrer ou RecordArray.

store.findAll() renvoie DS.PromiseArray qui correspond à DS.RecordArray.
store.findRecord renvoie une promesse qui sera résolue avec le record.
store.query() renvoie DS.PromiseArray de la même manière que findAll.

Les deux ci-dessous sont la méthode de synchronisation, il récupérera ce qui est disponible dans le magasin et renvoie l'enregistrement lui-même. il ne demandera pas au serveur d'extraire des données.

store.peekAll renvoie directement un DS.RecordArray.
store.peekRecord retourne direclty enregistrement

Il est important de noter que DS.RecordArray n'est pas un tableau JavaScript , il est un objet qui implémente Ember.Enumerable. C'est important parce que, par exemple, si vous voulez récupérer des enregistrements par index , la notation [] ne fonctionnera pas - vous devrez utiliser objectAt(index) à la place.

De Ember.Enumerable, la plupart du temps je me trouvais à utiliser ce qui suit,
forEach à itérer
map pour transformer à new Array
filterByfindBy pour le filtrage basé sur l'enregistrement de la propriété unique
toArray conversion à la normale tableau natif

+0

Merci beaucoup! Tu m'as dit exactement ce que j'essayais de comprendre. –

+0

Est-ce que tout est vrai pour store.query()? Les Guides Ember disent seulement que cela renvoie une "promesse" dont je ne suis pas sûr de ce que cela signifie. – Cameron

+1

oui c'est vrai pour 'store.query' aussi. J'ai mis à jour avec plus d'infos. dans le guide, ils ont mentionné comme ceci 'Cette méthode retourne un DS.PromiseArray de la même manière que findAll. – kumkanillam

0

Vous n'avez pas du tout google? FindAll renverra une promesse qui sera résolue en RecordArray.

Le RecordArray est un ArrayProxy.

http://emberjs.com/api/classes/Ember.ArrayProxy.html

Tout ce que vous avez besoin.

Si vous cherchez sur Google "ember findall", vous trouverez également des documents pour "Ember.js - Modèles: Trouver des notices - Guides".

https://guides.emberjs.com/v2.5.0/models/finding-records/

+0

Vous avez raison.C'était juste là dans la documentation. J'ai fait google, je suppose que je ne l'ai pas fait correctement. –