如何在计算中的`desc`中对数组值进行排序?

时间:2017-10-04 12:27:59

标签: sorting ember.js ember-data

我有一个模型值,当我执行每次迭代时,它工作正常。

<ul>
    <li>See here : </li>
    {{#each selectedCreditCard.balances.tenures as |balance|}}
    <li>Balances is : {{balance}}</li>
    {{/each}}
</ul>

但我需要按desc方式对值进行排序。所以我使用computed方法来执行desc数组。

sortTenuresBy:['desc'],
sortedTenures: Ember.computed.sort('selectedCreditCard.balances.tenures', 'sortTenuresBy'),
maxTenure:Ember.computed(function(){
return this.get('sortedTenures').get('firstObject');

但是像这样得到错误:

Assertion Failed: When using @each to observe the array 3,8,12,24, the array must return an object

如何解决这个问题?请帮帮我

1 个答案:

答案 0 :(得分:1)

如果您查看Ember.computed.sort的{​​{3}}定义;它需要一个属性键(在你的情况下是selectedCreditCard.balances.tenures)和一个排序定义(在你的情况下是sortTenuresBy)。但是,如果你看一下提供的例子;排序定义必须是普通属性名称或属性名称,后跟排序类型,如name:desckey:asc等。综上所述;在您的情况下,不能将Ember.computed.sort用于普通数组。我承认API文档含糊不清。

对于你的情况;你必须将计算属性写为函数;这是我不想要的;因为这是常见的方式;或者您可以使用以下APIember-awesome-macros的优点是可以嵌套提供的计算宏。

如果你addon查看array.sort;它说“结合了Array.prototype.sort()和Ember.computed.sort的功能”。因此我们可以使用这个。您希望数组按降序排序;我想类似下面的内容

sortTenuresBy: array.reverse(array.sort('selectedCreditCard.balances.tenures'))

应该有用。