Tôi đang cố gắng sắp xếp một mảng đối tượng bằng cách sử dụng hàm comparator
, nhưng có vẻ như hàm comparator
bị bỏ qua hoàn toàn (xem angular documentation).Tại sao bộ lọc AngularJS `orderBy` bỏ qua tham số` comparator`?
Tôi đang sử dụng angularJS 1.5.6.
Đây là một 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();
})
tôi câu hỏi: Tại sao comparator
bỏ qua? (Điều này có thể được nhìn thấy kể từ khi cuộc gọi console.log()
không bao giờ được thực hiện). Đây có phải là lỗi angularJS không?
Bởi vì điều này tôi thậm chí không thể đặt hàng một mảng các đối tượng bằng cách sử dụng một bộ so sánh tùy chỉnh.
Cảm ơn!
đáng ngạc nhiên các plunker ví dụ họ đưa ra trên trang web cũng không hoạt động như họ đã giải thích trong tài liệu https://plnkr.co/edit/FSq6AwlpdCRmTEQ7hefL?p=preview – Deep
Great catch Deep! Thậm chí không nhận ra điều đó! – Floris