Angular 2. How to apply orderBy?

后端 未结 4 2010
没有蜡笔的小新
没有蜡笔的小新 2020-12-03 04:13

I have a piece of code.



        
4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-03 04:34

    Thank you for your answers. I have written workable code below:

    @Pipe({name: 'orderBy'})
    
    export class orderBy implements PipeTransform {
        transform(obj: any, orderFields: string): any {
            orderFields.forEach(function(currentField) {
                var orderType = 'ASC';
    
                if (currentField[0] === '-') {
                    currentField = currentField.substring(1);
                    orderType = 'DESC';
                }
    
                obj.sort(function(a, b) {
                    if (orderType === 'ASC') {
                        if (a[currentField] < b[currentField]) return -1;
                        if (a[currentField] > b[currentField]) return 1;
                        return 0;
                    } else {
                        if (a[currentField] < b[currentField]) return 1;
                        if (a[currentField] > b[currentField]) return -1;
                        return 0;
                    }
                });
    
            });
            return obj;
        }
    }

    This code consider order direction DESC or ASC. The usage:

提交回复
热议问题