2014-04-01 6 views
7

ho bisogno di visualizzare la prima voce in un rapporto hasManyvisualizzare la prima voce in hasMany rapporto brace nel modello manubrio

Fondamentalmente un filo potrebbe avere più di 1 autore, ma ho bisogno di visualizzare solo il primo in un particolare modello

sono il seguente jSON

{ 
    threads: [ 
     { 
      id: 1, 
      authors: [2,3] 
     } 
    ], 
    authors: [ 
     { 
      id: 2, 
      fullname: "foo" 
     }, 
     { 
      id: 3, 
      fullname: "bar" 
     } 
    ]   
} 

E i seguenti modelli

App.Thread = DS.Model.extend({ 
    authors: DS.hasMany('author') 
}); 

App.Author = DS.Model.extend({ 
    fullname: DS.attr('string') 
}); 

ora nel mio modello sto provando a fare qualcosa come {{thread.authors[0].fullname}} ma non funziona. Ho provato anche thread.authors.0.fullname secondo la sintassi del manubrio ma nulla è cambiato.

Thnx in anticipo per il vostro aiuto

risposta

18

Usa di Ember.Enumerable firstObject:

{{thread.firstObject.fullName}} 

Se avete intenzione di usarlo in un sacco di posti, è meglio definirlo come una proprietà calcolata in il modello:

App.Thread = DS.Model.extend({ 
    authors: DS.hasMany('author') 

    firstAuthor: Ember.computed.alias('authors.firstObject') 
}); 

e utilizzarlo nel tuo template come:

{{firstAuthor.name}} 
+0

Perfetto, grazie! Solo per curiosità, cosa succede se ho bisogno del secondo? C'è un modo? – Fed03

+0

@ Fed03 È meglio mantenere la logica possibile (ottenendo il 2 ° oggetto, ottenendo l'ennesimo articolo, ...) dai modelli. Per rispondere alla tua domanda non c'è un modo predefinito per ottenere il 2 ° oggetto. Dovrai definirlo come proprietà calcolata nel tuo controller e calcolarlo lì. –

+1

puoi farlo this.get ('authors'). ObjectAt (n) nel tuo controller –