2012-11-19 2 views
0

J'utilise Ember-Data sur le côté client & rubis sur le côté serveur pour récupérer les données de postgres base de données SQL,objet automatique à la conversion du tableau

Quand je fais App.Person.findAll(App.Person) du côté serveur je retourne un tableau de hachage ruby objets

maintenant, quand je fais console.log(typeof App.Person.findAll(App.Person)) imprime 'object'

Mais quand je l'utilise dans le guidon que,

//Here I set in my ArrayController this.set('content', App.Person.findAll(App.Person)); 
{{#collection contentBinding="content"}} 
    Name: {{view.content.name}} 
{{/collection}} 

Il imprime tous les noms comme si nous itérons sur un tableau d'objets, est-ce que ember convertit l'objet en tableau?

+0

Qu'a cet objet imprimé? – thecodejack

+0

Il n'y a rien de mal à l'impression, ça se passe comme prévu, le doute étant de savoir comment iter le contenu quand le type de contenu est de Object..getting moi? –

Répondre

2

Essayez d'utiliser App.Person.findAll(App.Person).toArray() pour voir le tableau d'enregistrements et record.toJSON() pour voir un record comme un objet; à savoir

App.Person.findAll(App.Person).map(function(record) { 
    return record.toJSON(); 
} 

Le résultat renvoyé par findAll() est une RecordArray: https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/store.js#L378

https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/record_arrays/record_array.js

RecordArray étend ArrayProxy, qui hérite de la méthode toArray().

+0

Je pense que je n'ai pas correctement composé ma question, je comprends toArray() méthode obtient la liste de tableau, Mon doute était que même si nous n'utilisons pas .toArray() sur App.Person.findAll (App.Person) Handlebars est encore capable de itérer dessus, j'ai jeté un coup d'oeil dans la définition de l'assistant du guidon mais je n'ai rien trouvé qui convertit le "objet" retourné par App.Person.findAll (App.Person) en un tableau pour l'itération –

+0

La 'collection 'et' chaque assistant prend le chemin de l'objet comme une chaîne; afin de voir ce qui se passe en détail, je vous suggère de définir un point de rupture dans le code pour ce Ember.Handlebars.helper ('collection' dans votre cas: https://github.com/emberjs/ember.js/blob/master /packages/ember-handlebars/lib/helpers/collection.js#L142) et déboguez-le pour voir ce qu'il fait; J'étais incapable de saisir les détails quand je l'ai débogué. – Ygg

Questions connexes