Iteriert Ember.js ember-data-Datensatz-Arrays

Ich habe gegen meinen Kopf gegen dieses problem den ganzen Tag, und ich fühle mich wie ich bin nahe an einer Lösung, sondern kann einfach nicht Recht machen es möglich. Ich bin mit Ember.js mit Ember-Data und der Leuchten-adapter, schließlich die Umstellung auf ein REST-adapter. Das grundlegende problem ist dieses: ich habe Seiten-und Aufsichtsbehörden, mit einem viele-zu-viele Beziehung. Ich möchte den Benutzer eine select-box für Ihre bestehende Website/supervisor Paarungen, sortiert nach Standort, dh:

  • Seite 1 - Supervisor 1
  • Seite 1 - Supervisor 2
  • Seite 2 - Leiter 1 (denken Sie daran, viele an viele)
  • Seite 2 - Leiter 3

Muss ich streiten diese beiden Ressourcen in einem einzigen array, das ich übergeben kann, der zu einer Ansicht, die erbt (oder Erben) von Ember.Wählen Sie. Derzeit versuche ich dies mit einer Methode, die auf der Vorgesetzten-controller, der ich bin ruft, "flat", da wird es wieder ein abgeflacht-array für diese Beziehungen. Der controller ist unten dargestellt. Ich bin mit .finden().dann (), um die Daten zu verarbeiten, nachdem die Verheißung erfüllt wurde. Die Daten, die ich wieder erscheint enthalten alle meine vier Leuchten, aber wenn ich versuche eine der enumerable-Methoden (insbesondere forEach), es verhält sich so, als wenn es nur wieder das erste Objekt. Ich habe versucht, die Iteration über die Daten-Objekt als auch als Daten.get('content'). Ich bin ganz neu bei Ember, also vielleicht werde ich darüber sowieso falsch, aber egal, das scheint mir sehr seltsam zu mir. Hier ist mein 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
    }) ;
  }
}) ;

Und hier ist die log-Ausgabe von der ersten Konsole.log () - Aufruf

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

Können Sie mir sagen, was fehlt mir hier? Ich kann nicht herausfinden, wie Zugriff auf jede der vier resultierenden Aufsichtsbehörden.

Dank!

  • Haben Sie versucht, mit Daten.objectAt(index) statt Zugriff direkt über den [] - operator?
InformationsquelleAutor Ben | 2013-08-09
Schreibe einen Kommentar