2016-07-07 80 views
5

ho un percorso che popola una proprietà del modello tramite il metodo .store.query() all'interno di un hash RSVP:Ember model.get() non restituzione di valori o di legame al modello correttamente

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

Ciò restituisce una promessa e sembra avere i dati nel mio negozio secondo l'ispettore Ember, vedo il numero corretto di righe e hanno tutti gli attributi con i dati popolati.

Ho poi ho un modello di semplice componente dentro la mia principale modello di vista con un blocco each per visualizzare l'output:

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

sto passando la proprietà alla mia componente in questo modo:

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

Ma per qualche motivo il modello associa il numero corretto di righe, ma non accede correttamente ai numeri prop1 e prop2 della classe (quindi ottengo solo 20 righe di tabelle vuote)

Se cerco di uscita solo {{result}} nel mio modello sembra che questo:

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

Sono piuttosto sicuro che i dati sono lì da qualche parte proprio Sembra che il mio modello non stia accedendo le proprietà per un certo ragionare.

Qualche idea su dove cercare questo?

EDIT: Logging l'oggetto result sembra quasi giusto, ma non del tutto:

enter image description here

Ampliare il modello interno mostra alcuni dati, ma dice anche 'oggetto vuoto', che sembra tipo di sbagliato per me!

enter image description here

EDIT: se aiuta Ho una funzione di controllo, che ottiene il model.myData e opera su di essa, che mi dà il risultato mi aspetto:

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

Cosa si ottiene in console se si registra il risultato? '{{log result}}' – jeffdill2

+0

Ottengo quello che sembra essere una classe di Ember con valori al suo interno, ma dice anche stranamente 'Empty object' in alcuni punti, aggiornerà la domanda con le immagini – dougajmcdonald

+0

'myData: this. store.query ('table-datum', parameters) 'non è valido, è il tuo vero codice? Restituire promesse in proprietà/proprietà calcolate è altamente sconsigliato, ogni possibilità è possibile spostare la query sulla rotta? –

risposta

0

È questo ciò che stai facendo dentro il tuo itinerario modella?

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); 
} 

Quindi all'interno del modello accedo a myData.

+1

I casi 'then' e' catch' nell'esempio sono ridondanti –

+0

Non deve accedere a 'model.myData' all'interno del modello? –

+0

@Vis Sto facendo quello che hai scritto senza il .then/catch perché ho capito che erano ridondanti come dice @DanMcClain. Inoltre non ho impostato esplicitamente una proprietà controller per il model.myData come tutte le altre mie proprietà hash funzionano bene e sono accessibili (io uso 'findAll()' con quelle) – dougajmcdonald