2014-04-01 22 views
7

muszę wyświetlić pierwszą pozycję w stosunku hasManyWyświetla pierwszy element w hasMany relacji ember w kierownicy szablonu

Zasadniczo wątek może mieć więcej niż 1 autora, ale trzeba wyświetlić tylko pierwszy z nich w szczególny szablon

mam następujący JSON

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

i następujących modeli

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

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

teraz w moim szablonie Mam zamiar zrobić coś takiego jak {{thread.authors[0].fullname}}, ale to nie działa. Próbowałem również thread.authors.0.fullname zgodnie ze składnią kierownicy, ale nic się nie zmieniło.

Thnx z góry za pomoc

Odpowiedz

18

Zastosowanie Ember.Enumerable na firstObject:

{{thread.firstObject.fullName}} 

Jeśli masz zamiar używać go w wielu miejscach, wszelkich starań, aby określić ją jako własność w komputerowej model:

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

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

i używać go w swoich szablonach jak:

{{firstAuthor.name}} 
+0

Doskonale, dzięki! Po prostu z ciekawości, co jeśli będę potrzebować drugiego? Czy istnieje sposób? – Fed03

+0

@ Fed03 Najlepiej zachować jak najwięcej logiki (uzyskanie drugiego przedmiotu, zdobycie N-tego elementu, ...) z szablonów. Aby odpowiedzieć na twoje pytanie, nie ma zdefiniowanego wcześniej sposobu na zdobycie drugiego przedmiotu. Będziesz musiał zdefiniować go jako obliczoną właściwość w swoim kontrolerze i obliczyć tam. –

+1

możesz to zrobić.get ("autorzy"). ObjectAt (n) w twoim kontrolerze –

Powiązane problemy