Угловая таблица сортировки

0

Мне нужно отсортировать элементы таблицы, щелкнув заголовок таблицы. Мой номер столбца соответствует строке. Поэтому сортировка не применяется, как я желаю. Я знаю, что должен преобразовать свою строку в float. Мне нужен разделитель запятой и точность двойной точки. Я попытался сделать parseFloat, но это не работает.

Пример. Я хочу отсортировать строки типа "123 456,00", "345", "-34.00", "7.78". Я поделился ссылкой jsfiddle, чтобы объяснить мой сценарий. http://jsfiddle.net/k4seL1yx/1/

    function SortableTableCtrl() {
    var scope = this;
    scope.head = {
        a: "Poured",
        b: "Sold",
        c: "Loss"
    };
    scope.body = [{"ID":"September-2016", "Product":"September-2016", "Poured":"111759.07", "Sold":"107660.97", "Loss":"-4098.10", "Variance":"-3.67", "startDate":"2016-09-01", "endDate":"2016-09-22"}, {"ID":"November-2015", "Product":"November-2015", "Poured":"53690.25", "Sold":"52953.60", "Loss":"-736.65", "Variance":"-1.37", "startDate":"2015-11-20", "endDate":"2015-11-30"}, {"ID":"May-2016", "Product":"May-2016", "Poured":"156401.65", "Sold":"151192.51", "Loss":"-5209.14", "Variance":"-3.33", "startDate":"2016-05-03", "endDate":"2016-05-31"}, {"ID":"March-2016", "Product":"March-2016", "Poured":"49260.22", "Sold":"49399.14", "Loss":"138.92", "Variance":"0.28", "startDate":"2016-03-01", "endDate":"2016-03-09"}, {"ID":"June-2016", "Product":"June-2016", "Poured":"162126.88", "Sold":"161718.62", "Loss":"-408.26", "Variance":"-0.25", "startDate":"2016-06-01", "endDate":"2016-06-30"}, {"ID":"July-2016", "Product":"July-2016", "Poured":"160185.68", "Sold":"154882.40", "Loss":"-5303.28", "Variance":"-3.31", "startDate":"2016-07-01", "endDate":"2016-07-31"}, {"ID":"January-2016", "Product":"January-2016", "Poured":"355509.26", "Sold":"179696.72", "Loss":"-175812.54", "Variance":"-49.45", "startDate":"2016-01-01", "endDate":"2016-01-31"}, {"ID":"February-2016", "Product":"February-2016", "Poured":"150980.73", "Sold":"146248.72", "Loss":"-4732.01", "Variance":"-3.13", "startDate":"2016-02-01", "endDate":"2016-02-29"}, {"ID":"December-2015", "Product":"December-2015", "Poured":"167843.42", "Sold":"163732.95", "Loss":"-4110.47", "Variance":"-2.45", "startDate":"2015-12-01", "endDate":"2015-12-31"}, {"ID":"August-2016", "Product":"August-2016", "Poured":"168853.51", "Sold":"160024.84", "Loss":"-8828.67", "Variance":"-5.23", "startDate":"2016-08-01", "endDate":"2016-08-31"}]
    scope.sort = {
        column: 'b',
        descending: false
    };

    scope.selectedCls = function(column) {
        return column == scope.sort.column && 'sort-' + scope.sort.descending;
    };

    scope.changeSorting = function(column) {
        var sort = scope.sort;
        if (sort.column == column) {
            sort.descending = !sort.descending;
        } else {
            sort.column = column;
            sort.descending = false;
        }
    };
}
Теги:
sorting

1 ответ

0
Лучший ответ

Я нашел решение для моего вопроса. На самом деле я очень сосредоточен на конвертации "вылил, продал, потеря" из строки в плавать. Но почему я не должен создавать новый столбец как клон этого, а формат этого - float. parseFloat сделал магию. Поэтому я могу использовать значение Poured для показа таблицы и использовать значение pouredClone для сортировки позади.

//Initially I got the above scope.body only. To perform sorting I modified scope.body as like below      
scope.body.forEach(function(value) {
      value.pouredClone   = parseFloat(value.Poured)
      value.soldClone     = parseFloat(value.Sold)
      value.lossClone     = parseFloat(value.Loss)
      value.varianceClone = parseFloat(value.Variance)
}); 

Вот ссылка скрипки с решением. http://jsfiddle.net/q7mcu6fx/1/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню