Display the first item in hasMany ember relationship in handlebars template

感情迁移 提交于 2019-12-08 17:40:03

问题


I need to display the first item in an hasMany relationship

Basically a thread could have more than 1 author but I need to display only the first one in a particular template

I've the following json

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

And the following models

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

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

now in my template I'm tring to do something like {{thread.authors[0].fullname}} but it doesn't work. I've tried also thread.authors.0.fullname according to the handlebars syntax but nothing changed.

Thnx in advance for your help


回答1:


Use Ember.Enumerable's firstObject:

{{thread.firstObject.fullName}}

If you are going to use it in a lot of places, its best to define it as a computed property in the model:

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

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

and use it in your templates as:

{{firstAuthor.name}}


来源:https://stackoverflow.com/questions/22795210/display-the-first-item-in-hasmany-ember-relationship-in-handlebars-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!