Ich habe den ganzen Tag mit meinem Kopf gegen dieses Problem geschlagen, und ich habe das Gefühl, dass ich einer Lösung nahe bin, aber ich kann es nicht einfach hinkriegen. Ich benutze Ember.js mit Ember-Data und dem Fixtures-Adapter, um eventuell zu einem REST-Adapter zu migrieren. Das grundlegende Problem ist das: Ich habe Sites und Supervisors mit einer viele-zu-viele Beziehung. Ich möchte dem Benutzer ein Auswahlfeld für ihre bestehenden Standort/Supervisor-Paarungen präsentieren, dabei sortiert, das heißt:Iterieren über Ember.js Glut-Datensatz-Arrays
- Seite 1 - Betreuer 1
- Seite 1 - Supervisor-2
- Seite 2 - Betreuer 1 (denken Sie daran, viele zu viele)
- Seite 2 - Leiter 3
ich diese beiden Ressourcen in einem einzigen Array hadern müssen, dass ich auf einen Blick übergeben kann, die erbt (oder wi Erben) von Ember.Select. Momentan versuche ich dies mit einer Methode auf dem Supervisors-Controller, die ich "flach" nenne, weil es ein flaches Array zurückgibt, das diese Beziehungen darstellt. Der Controller ist unten abgebildet. Ich verwende .find(). Then(), um die Daten zu verarbeiten, nachdem das Versprechen erfüllt wurde. Die Daten, die ich zurück bekomme, erscheinen, um alle vier meiner Fixtures zu enthalten, aber wenn ich eine der aufzählbaren Methoden auf ihnen versuche (insbesondere forEach), verhält es sich so, als hätte es nur das erste Objekt zurückgegeben. Ich habe versucht, über das Datenobjekt sowie data.get ('Inhalt') zu iterieren. Ich bin ziemlich neu in Ember, also mache ich das vielleicht sowieso falsch, aber das scheint mir sehr seltsam zu sein. 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 Protokollausgabe von der ersten console.log() aufrufen
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 ich hier fehlt? Ich kann nicht herausfinden, wie ich auf jeden der vier resultierenden Supervisors zugreifen kann.
Danke!
Haben Sie versucht, mit data.objectAt (Index) anstatt direkt über den Operator [] zuzugreifen? –