因为我来自java服务器端世界,所以我对Emberjs很新。
我面临的实际情况如下。 我有一个会员模型,像这样
import DS from 'ember-data';
export default DS.Model.extend({
firstname : DS.attr('string'),
lastname: DS.attr('string'),
...
paid_fees : DS.hasMany('paid-fee', {async : true})
});
...和付费模式
import DS from 'ember-data';
export default DS.Model.extend({
year : DS.attr('number'),
amount: DS.attr('number')
});
这是我的问题,如何显示成员列表,并在其中一列中显示例如' V'如果其中一项付费费用是2016年。
这是我写的模板:
<table class="table table-hover">
<tr>
<th>Prénom</th>
<th>Nom</th>
<th>Email</th>
<th>Gsm</th>
<th>En ordre de côtisations</th>
<th>Détails</th>
</tr>
<tbody>
{{#each model as |member|}}
<tr>
<td>{{member.firstname}}</td>
<td>{{member.lastname}}</td>
<td>{{member.email}}</td>
<td>{{member.mobilePhone}}</td>
<td>
/*
How-TO ??? Component ? Computed property ? Helpers ?
*/
</td>
<td>{{#link-to 'members.show' member}}<span class="glyphicon glyphicon-zoom-in" />{{/link-to}}</td>
</tr>
{{else}}
No data available
{{/each}}
</tbody>
</table>
有任何帮助吗? 谢谢 奥利弗
答案 0 :(得分:0)
你正在寻找的是一个PromiseObject,它将让你有一个计算属性,它返回一个代理其值的promise:
camera
将其添加到会员模型中,您就可以在模板中使用hasPaidThisYear: Ember.computed('paid_fees.@each.year', function() {
return DS.PromiseObject.create({
promise: this.get('paid_fees').then(function(paidFees) {
return paidFees.any(function(paidFee) {
return paidFee.get('year') === 2016;
});
})
});
})
。
PromiseObject的API文档:http://emberjs.com/api/data/classes/DS.PromiseObject.html
答案 1 :(得分:0)
我发现了问题 some()方法在javascript 1.6中有效,但在Ember中无效。
我必须使用Enumerable上的任何方法才能使其正常工作
hasPaidThisYear: Ember.computed('paid_fees.@each.year', function() {
return DS.PromiseObject.create({
promise: this.get('paid_fees').then(function(paidFees) {
return paidFees.any(function(paidFee) {
return paidFee.get('year') === 2016;
});
})
});
})