I am relatively new to Angular.js and am having a problem with date sorting. I have looked around the web for similar issues, but haven't found any that are of quite the same flavor.
The situation is as follows:
I am getting a data set back from the database (that I would like to display in a column-header sortable table), in which each record contains a date formatted as a string:
data = [
{
"name": "Test_1_Test",
"creation_date": "8/2/2013 10:31:02 AM"
},
{
"name": "Test_2_Test",
"creation_date": "8/1/2013 9:12:32 AM"
},
{
"name": "Test_3_Test",
"creation_date": "9/13/2013 4:55:09 AM"
}
]
Additionally, I am getting back a set of column headers:
headers = [
{
"column": "name",
"label": "Doc Name"
},
{
"column": "creation_date",
"label": "Create Date",
"displayFormat": {
"dateType": "medium"
}
}
]
Using an ng-repeat directive to create the column headers (no trouble there):
<th ng-repeat="column in smartviewColumns">
<a href="" ng-click="sortBy($index)">
{{column.label}}
</a>
</th>
where the sortBy function in the controller is as follows:
$scope.sortBy = function(index){
if ($scope.sortColumn && $scope.sortColumn === $scope.columns[index]) {
$scope.reverse = !$scope.reverse;
}
$scope.sortColumn = $scope.columns[index];
}
Additionally, using nested ng-repeat directives to create the data rows (across each column) in the table:
<tr ng-repeat="record in data | orderBy:sortColumn:reverse">
<td ng-repeat="column in headers">
<div ng-if="column.displayFormat && column.displayFormat.dateType">
{{getDate(record[column]) | date:column.displayFormat.dateType}}
</div>
<div ng-if="!smartviewColumns[$index].displayFormat">
{{record[smartviewColAttrs[$index]]}}
</div>
</td>
</tr>
The issue is that the dates do not sort properly. When I reverse the order, the list flips but the mis-ordering persists. I have tried formatting the date string differently, as well as calling new Date(creation_date), both to no avail.
Fiddle showing similar symptom
Has anyone else experienced this issue? (Additionally, i should mention that i am using a paginator as a secondary filter on the data rows, but even when excluding it the behavior persists)