2017-03-02 5 views
0

私は就業履歴を含むデータを持っています。私は私の雇用dateToのための2つのフィールドを持っている:AngularJs ng-repeat multiple orderByと条件付き

yearTo, monthTo 

私が正しく、私はそれが正常に動作し

<tr id="employment_history_" ng-repeat="history in candidate.employmentHistory | orderBy : ['-yearTo','monthTo',] | date:['YYYY', 'MMM'] "> 

によって行うことができ、最新の雇用dateToに基づいて雇用履歴をソートする必要があります。しかし、私には1つの問題があります。どのように私はこれを並べ替えるか、フィールドmonthToもだけでなく、月の日付形式の値PresentをcontaintできMMM

など JAN, FEB MARなどの質問、私は dateフォーマットを持って理解しますが、私はへ monthToPresentを持つレコードをしたいです最初のリストに?

+0

現在の値を正しい順番で処理する方法を尋ねていますか? –

+0

@ YogeshPatilはい。日付と一緒に – Yassi

+0

ここに正しい方向にいくつかのステップを与える必要がありますjsfiddleです。 https://jsfiddle.net/2yt04ztr/13/ –

答えて

0

だから、これJSFiddleは正しい方向にあなたを助けることができる:あなたが提供した例で行ったようにあなたは、ORDERBYディレクティブに述語の配列を与えることができますので、この作品JSFiddle

方法です。しかし、あなたの例では、文字列述部だけを使用し、関数述部も使用できます。ファンクション述語は、注文しようとしているアイテムを受け取り、返すアイテムを選択することができます。角度は、その値を使用して値を並べ替えることができます。

ng-repeat="hist in main.history | orderBy: ['-yearTo', main.orderMonthTo]" 

this.orderMonthTo = function(item) { 
    if (item.monthTo === 'Present') { 
    return -13; 
    } else { 
    return Number(moment(item.monthTo, 'MMM').format('M'))*-1; 
    } 
} 

この詳細については、hereを参照してください。 また、JSFiddleでは、momentjsライブラリを使用して日付を扱いやすくしました。