Как создать функцию сортировки custum для ng-grid angularjs

тип ng-сетки по умолчанию не является буквенно-цифровым. можно ли применить специальную функцию сортировки для получения правильной сортировки, например:

'11' '2' 'eé' 'ed' => '2' '11' 'ed' 'eé'

2 ответа

Вы можете определить свою собственную функцию сортировки.

Вот пример с вашими данными. (Исправлено с использованием алгоритма естественной сортировки Девина Торреса)

var myAwesomeSortFn = function(a,b){ var NUMBER_GROUPS = /(-?\d*\.?\d+)/g; var myAwesomeSortFn = function(a, b) { var aa = String(a).split(NUMBER_GROUPS), bb = String(b).split(NUMBER_GROUPS), min = Math.min(aa.length, bb.length); for (var i = 0; i < min; i++) { var x = parseFloat(aa[i]) || aa[i].toLowerCase(), y = parseFloat(bb[i]) || bb[i].toLowerCase(); if (x < y) return -1; else if (x > y) return 1; } return 0;
};
$scope.myData = [{name: "Moroni", age: 11}, {name: "Tiancum", age: 2}, {name: "Jacob", age: 'eé'}, {name: "Nephi", age: 'ed'}];
$scope.gridOptions = { data: 'myData', columnDefs: [{field: 'name', displayName: 'Name'}, {field:'age', displayName:'Age', sortFn: myAwesomeSortFn}]
};


Вот что я имею до сих пор:

$scope.links = { sortFun: function(a, b) { console.log('a:' + a + ', b: ' + b); } };
...
$scope.data.grid.columnDefs.push( {'field': key, 'sortingAlgorithm': $scope.links.sortFun }
);
...
$scope.data.grid.columnDefs.push({'field': key, 'sortingAlgorithm': $scope.links.sortFun });

licensed under cc by-sa 3.0 with attribution.