Itération sur Ember.js braise-Enregistrement des données des Tableaux

J'ai été me frappant la tête contre ce problème tous les jours, et je sens que je suis proche d'une solution, mais ne peuvent tout simplement pas tout à fait le faire se produire. Je suis à l'aide d'Ember.js avec Ember-Data et les appareils de l'adaptateur, finalement, la migration vers le RESTE de l'adaptateur. Le problème de base est ceci: j'ai des Sites et des Superviseurs, avec un plusieurs-à-plusieurs relation. Je tiens à présenter à l'utilisateur une boîte de sélection pour leur site/superviseur liaisons, triés par site, c'est à dire:

  • Site 1 - Superviseur 1
  • Site 1 - Superviseur 2
  • Site 2 - Superviseur 1 (rappelez-vous, plusieurs-à-plusieurs)
  • Site 2 - Superviseur 3

J'ai besoin de disputer ces deux ressources dans un seul tableau que je peux passer à une vue qui hérite (ou héritera) à partir de Braise.Sélectionnez. Actuellement, je suis d'essayer cela avec une méthode sur les Superviseurs contrôleur qui je suis en appelant "à plat", parce qu'il sera de retour aplatie tableau représentant ces relations. Le contrôleur est indiqué ci-dessous. Je suis en utilisant .find().alors() pour traiter les données après la promesse a été accomplie. Les données que je serai de retour apparaît pour contenir tous les quatre de mes montages, mais quand j'essaie tout de l'énumération des méthodes (notamment forEach), il se comporte comme si il a renvoyé le premier objet. J'ai essayé de parcourir l'objet de données ainsi que des données.get('contenu'). Je suis assez nouveau à la Braise, donc je vais peut-être à propos de ce mauvais de toute façon, mais peu importe, cela semble très étrange pour moi. Voici mon code:

App.SupervisorsController = Ember.ArrayController.extend({
  flat: function(){
    return App.Supervisor.find().then(function(data){
      var c = data.get('content') ;
      console.log(c) ;    //<-- logs an object containing four records,
                          //    with attribute "length" showing 4
                          //    Great! (see below for log output)

      console.log(c[0]) ; //<-- logs first record. Great!
      console.log(c[1]) ; //<-- undefined (?!)
      console.log(c[2]) ; //<-- undefined (?!)
      console.log(c[3]) ; //<-- undefined (?!)
      console.log(c.get('length')) ; //<-- 1 (not four?!)

      return c ; //<-- eventually this will return the newly constructed array
    }) ;
  }
}) ;

Et voici le journal de sortie de la première console.log() appel

0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]

Pouvez-vous me dire ce que je suis en manque ici? Je ne peux pas comprendre comment accéder à chacun des quatre résultant des superviseurs.

Merci!

Avez-vous essayé d'utiliser les données.objectAt(index) au lieu d'accéder directement via l'opérateur []?

OriginalL'auteur Ben | 2013-08-09