2017-10-04 78 views
0

我有一個模型值,當我做每個迭代它工作正常。如何在計算中對`desc`中的數組值進行排序?

<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,2,3,4] – 3gwebtrain

+0

如果你想獲得'max',你可以使用[Ember.computed.max](https://www.emberjs.com/api/ember/ 2.15 /命名空間/ Ember.computed /方法/最大?錨=最大值) – ykaragol

回答

1

如果你看API的定義Ember.computed.sort;它需要一個屬性鍵(在你的情況下是selectedCreditCard.balances.tenures)和一個排序定義(在你的情況下是sortTenuresBy)。但是,如果您查看所提供的示例,排序定義必須是簡單屬性名稱或屬性名稱,後面跟排序類型,例如name:desckey:asc等等。綜上所述;在你的情況下,不可能對普通數組使用Ember.computed.sort。我承認API文檔含糊不清。

對於您的情況;您必須將計算的屬性寫爲函數;這是你不想要的,我想;因爲這是常用的方式;或者你可以使用以下addonember-awesome-macros最棒的是你可以嵌套提供的計算宏。

如果你看APIarray.sort;它說「結合了Array.prototype.sort()和Ember.computed.sort的功能」。因此我們可以使用這個。您希望數組按降序排序;我想像下面這樣的東西

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

應該工作。

相關問題