2017-10-04 2 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/namespaces/Ember.computed/methods/max?anchor = max) – ykaragol

答えて

1

APIの定義を参照する場合Ember.computed.sort;プロパティキー(あなたの場合はselectedCreditCard.balances.tenures)とソート定義(あなたの場合はsortTenuresBy)が必要です。しかし、提供された例を見ると、ソート定義は、プレーンプロパティ名またはプロパティ名の後にソートタイプ(name:descまたはkey:ascなど)を付けたものでなければなりません。要約すれば;あなたの場合のようにプレーンアレイにEmber.computed.sortを使用することはできません。私は、APIのドキュメントがあいまいであることを認めます。

あなたの場合、計算されたプロパティを関数として書くか、それはあなたが私が想像したくないものです。これは一般的な方法であるためです。または次のaddonを使用することができます。提供された計算マクロをネストすることができるのは、ember-awesome-macrosの素晴らしい点です。

APIarray.sortにすると、 Array.prototype.sort()とEmber.computed.sortの両方の機能を組み合わせています。したがって、私たちはこれを使うことができます。配列を降順でソートする必要があります。私は次のようなものを想定しています。

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

は動作します。

関連する問題