我有一个模型值,当我执行每次迭代时,它工作正常。
<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
如何解决这个问题?请帮帮我
答案 0 :(得分:1)
如果您查看Ember.computed.sort
的{{3}}定义;它需要一个属性键(在你的情况下是selectedCreditCard.balances.tenures
)和一个排序定义(在你的情况下是sortTenuresBy
)。但是,如果你看一下提供的例子;排序定义必须是普通属性名称或属性名称,后跟排序类型,如name:desc
或key:asc
等。综上所述;在您的情况下,不能将Ember.computed.sort
用于普通数组。我承认API文档含糊不清。
对于你的情况;你必须将计算属性写为函数;这是我不想要的;因为这是常见的方式;或者您可以使用以下API。 ember-awesome-macros
的优点是可以嵌套提供的计算宏。
如果你addon查看array.sort
;它说“结合了Array.prototype.sort()和Ember.computed.sort的功能”。因此我们可以使用这个。您希望数组按降序排序;我想类似下面的内容
sortTenuresBy: array.reverse(array.sort('selectedCreditCard.balances.tenures'))
应该有用。