2016-07-07 10 views
5

Ich habe eine Route, die ein Modell Eigenschaft über die .store.query() Methode innerhalb eines RSVP Hash auffüllt:Ember model.get() keine Werte oder die Bindung an Vorlage Rückkehr richtig

model(params, transition) { 
    return Ember.RSVP.hash({ 
     myData: this.store.query('table-datum', parameters) 
    }); 
} 

Dieses Versprechen zurück und scheint zu bekommen Daten in meinem Geschäft nach dem Ember-Inspektor, sehe ich die richtige Anzahl von Zeilen und sie alle haben Attribute mit Daten gefüllt.

Ich habe dann eine einfache Komponente Vorlage in meiner Hauptansicht Schablone mit einem each Block die Ausgabe anzuzeigen:

{{#each data as |result|}} 
     <tr> 
      <td>{{result.prop1}}</td> 
      <td>{{result.prop2}}</td> 
     </tr> 
    {{/each}} 

ich die Eigenschaft meiner Komponente wie folgt übergeben:

 <div id="tableContainer"> 
      {{result-table data=model.myData}} 
     </div> 

Aber aus irgendeinem Grund bindet die Vorlage die richtige Anzahl von Zeilen, aber nicht korrekt auf die prop1 und prop2 Bits der Klasse zugreifen (so bekomme ich nur 20 oder so leere Tabellenzeilen)

Wenn ich die Ausgabe nur {{result}} in meiner Vorlage versuchen sieht es wie folgt aus:

<[email protected]:table-datum::ember574:1> 

Ich bin ziemlich sicher, die Daten irgendwo da nur es scheint, wie meine Vorlage ist nicht die Eigenschaften für einige Zugriff Grund.

Irgendwelche Ideen, wo man nach diesem sucht?

EDIT: Protokollierung der result Objekt sieht fast richtig, aber nicht ganz:

enter image description here

Erweiterung des internen Modells einige Daten zeigt, sagt aber auch ‚Leere Objekt‘, das mir Art scheint falsch!

enter image description here

EDIT: Wenn es hilft ich eine Controller-Funktion haben, die die model.myData und arbeitet auf sie bekommt, was mir das Ergebnis, das ich erwarten gibt:

getMax() { 
    let max = _.max(this.get('model.myData'),'aField').aField; 
    console.log(max); // logs 41 as I expect 
    return max; 
} 
+0

Was bekommen Sie in der Konsole, wenn Sie das Ergebnis protokollieren? '{{log Ergebnis}}' – jeffdill2

+0

Ich bekomme, was scheint eine Ember-Klasse mit Werten darin zu sein, aber es auch seltsam sagt 'Leeres Objekt' an einigen Stellen, wird die Frage mit den Bildern – dougajmcdonald

+0

'myData aktualisieren: das. store.query ('table-datum', Parameter) 'ist ungültig, ist das dein echter Code? Es wird dringend davon abgeraten, Versprechen in Eigenschaften/berechneten Eigenschaften zurückzugeben, jede Möglichkeit, die Abfrage auf die Route zu verschieben? –

Antwort

0

Ist das, was Ihr in tut Dein Routenmodell?

model() { 
    return Ember.RSVP.hash({ 
     myData: this.store.query('table-datum', parameters) 
    }).then(function(results) { 
     return results; 
    }).catch(function(error) { 
     throw error; 
    }); 
}, 
setupController(controller, model) { 
    this._super(...arguments); 
    Ember.set(controller, 'myData', model.myData); 
} 

Dann würde ich innerhalb der Vorlage auf myData zugreifen.

+1

Die Fälle 'then' und' catch' in Ihrem Beispiel sind redundant –

+0

Muss er innerhalb der Vorlage nicht auf 'model.myData' zugreifen? –

+0

@Vis Ich mache was du geschrieben hast ohne das .then/catch weil ich verstanden habe, dass sie überflüssig sind, wie @DanMcClain sagt. Zusätzlich habe ich nicht explizit eine Controller-Eigenschaft auf den model.myData gesetzt, wie alle meine anderen Hash-Eigenschaften ok arbeiten und zugänglich sind (ich benutze 'findAll()' mit denen) – dougajmcdonald