2014-04-01 35 views
7

我需要在一个的hasMany关系显示在的hasMany烬关系的第一项在车把模板

显示第一项基本上是一个线程可能具有比1位作者以上,但我需要显示仅在特定的第一个模板

我有以下的JSON

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

及以下车型

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

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

现在在我的模板中我正在尝试做类似{{thread.authors[0].fullname}}但它不起作用。根据句柄语法,我也试过thread.authors.0.fullname,但没有任何改变。

日Thnx提前对您有所帮助

回答

18

使用Ember.Enumerable的firstObject

{{thread.firstObject.fullName}} 

如果你打算在很多地方使用它,它最好它定义为在计算财产型号:

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

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

,并用它在你的模板为:

{{firstAuthor.name}} 
+0

完美,谢谢!出于好奇,如果我需要第二个呢?有没有办法? – Fed03

+0

@ Fed03尽量保持尽可能多的逻辑(获取第二项,获得第N项,...)。要回答你的问题,没有预先定义的方式来获得第二个项目。您必须将其定义为控制器中的计算属性,并在其中计算它。 –

+1

您可以在您的控制器中执行this.get('authors')。objectAt(n) –