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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, wie Sie den Zugriff auf die Modelle, bevor Sie vollständig geladen sind (Sie können dies in der Eigenschaft, isUpdating). Wenn Sie das Gefühl faul an dieser Suche, die Sie verwenden können, ember später ausführen, um nur die Artikel angezeigt, die ein klein wenig später. Oder Sie können das Modell auf dem controller und machen es und lassen ember aktualisieren Sie die Ansicht, wenn die Modelle fertig geladen...
http://jsbin.com/ijiqeq/12/edit
Glück mit Ember!
undefined
, nichtnull
<select>
element. Ich kann das binden eines array zu Ember.Wählen Sie, die schien (zunächst) wie eine einfache option, aber ist vielleicht nicht das beste Werkzeug für diesen job. Ich kann auch einen anderen Endpunkt auf meine RUHE, aber es scheint so, dass sollte nicht notwendig sein. Bin ich besser dran zu bauen, meine eigene Sicht für das select-element, die beobachtet, beide Seiten und Vorgesetzten?