我有一个hasMany关系,我想根据成员的属性值选择一个成员。
示例是证书有多个发行版,我想根据start属性获取最新版本。但即使我尝试仅返回关联中的第一项,我也无法在模板中显示任何内容。
App.IssuanceModel = DS.Model.extend({
start: DS.attr(),
end: DS.attr()
});
App.CertificateModel = DS.Model.extend({
issuances: hasMany('issuance', {async: true}),
currentIssuance: function(){
this.get('issuances').then(function(issuances){
return issuances.objectAt(0);
});
}.property('issuances.@each.start')
});
并在证书模板中
{{currentIssuance.start}}
我一无所获。
答案 0 :(得分:1)
你的回归是异步发生的,所以它真的回归未定义,因为你没有返回任何东西。只需使用firstObject
。
{{issuances.firstObject.start}}
答案 1 :(得分:0)
@ Kingpin2k的回答让我走上了正确的道路。我可以在已排序的发布数组上使用firstObject
属性,因此我不会尝试计算currentIssuance
我可以排序:
sortedIssuances: function(){
return this.get('issuances').sortBy('start');
}.property('issuances.@each.start'),
在模板中只获取第一个对象。
{{sortedIssuances.firstObject.start}}