根据我的Emberjs模型中的条件显示特定值

时间:2016-02-11 18:28:43

标签: ember.js

因为我来自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>

有任何帮助吗? 谢谢 奥利弗

2 个答案:

答案 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;
            });
        })
    });
})