Próbuję zamówić szereg obiektów przy użyciu funkcji comparator
, ale wygląda na to, że funkcja comparator
jest całkowicie ignorowana (patrz: angular documentation).Dlaczego filtr "orderBy" AngularJS ignoruje parametr "comparator"?
Używam angularJS 1.5.6.
Oto JSFiddle
HTML:
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.6/angular.min.js">
</script>
<body ng-app="app" ng-controller="ctrl">
{{msg}}
</body>
JavaScript:
angular.module("app", [])
.factory('f1', function($filter) {
var f1 = {};
function comparator(a,b) { console.log(a,b); return a.id - b.id; }
function getter(x) { /*console.log(x);*/ return x; }
f1.testOrderBy = function() {
return $filter('orderBy')(
[ {id:3}, {id:1}, {id:2} ],
getter,
false,
comparator
)
.map(function(x) { return x.id; })
};
return f1;
})
.controller("ctrl", function($scope, f1) {
$scope.msg = f1.testOrderBy();
})
moje pytanie: Dlaczego comparator
ignorowane? (Można to zauważyć, ponieważ wywołanie console.log()
nigdy nie jest wykonywane). Czy to jest błędny błąd JS?
Z tego powodu nie mogę nawet zamówić tablicy obiektów przy użyciu niestandardowego komparatora.
Dzięki!
zaskakująco przykład plunkera, który dali na stronie, również nie działa, jak wyjaśniono w dokumentacji https://plnkr.co/edit/FSq6AwlpdCRmTEQ7hefL?p=preview – Deep
Wielki połów Deep! Nawet tego nie zauważyłem! – Floris