2014-04-01 18 views
7

ich das erste Element in einer hasMany Beziehung zum Anzeigen benötigen könntedas erste Element in hasMany ember Beziehung in Lenker Vorlage

Im Grunde ein Gewinde haben mehr als 1 Autor, aber ich brauche nur die erste in einer bestimmten anzuzeigen Vorlage

ich habe die folgende json

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

und die folgenden Modelle

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

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

jetzt in meiner Vorlage Ich tring etwas wie {{thread.authors[0].fullname}} tun, aber es funktioniert nicht. Ich habe auch thread.authors.0.fullname entsprechend der Lenkstangensyntax versucht, aber nichts geändert.

Thnx im Voraus für Ihre Hilfe

Antwort

18

Verwenden Ember.Enumerable des firstObject:

{{thread.firstObject.fullName}} 

Wenn Sie es in vielen Orten benutzen wollen, seine besten als eine berechnete Eigenschaft zu definieren, in das Modell:

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

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

und verwenden sie es in Ihren Vorlagen als:

{{firstAuthor.name}} 
+0

Perfekt, danke! Nur aus Neugier, was ist, wenn ich die zweite brauche? Gibt es einen Weg? – Fed03

+0

@ Fed03 Es ist das Beste, so viel Logik wie möglich zu behalten (2. Element zu bekommen, Nth item, ...) aus Templates. Um Ihre Frage zu beantworten, gibt es keinen vordefinierten Weg, den 2. Gegenstand zu bekommen. Sie müssen es als eine berechnete Eigenschaft in Ihrem Controller definieren und dort berechnen. –

+1

können Sie dies tun.get ('Autoren'). ObjectAt (n) in Ihrem Controller –

Verwandte Themen