2016-09-23 2 views
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; 
     } 
    }; 
} 

답변

0

는 내 질문에 대한 해결책을 발견했다. 실제로 나는 끈에서 부유물로 "붓고, 팔고, 잃어 버린"개종자에 초점을 맞추고 있습니다. 하지만 왜 내가이 복제본으로 새 열을 만들어서는 안되며 그 형식은 유동적입니다. 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/