gpt4 book ai didi

javascript - 为什么 AngularJS `orderBy` 过滤器会忽略 `comparator` 参数?

转载 作者:数据小太阳 更新时间:2023-10-29 04:31:58 28 4
gpt4 key购买 nike

我正在尝试使用 comparator 函数对对象数组进行排序,但似乎完全忽略了 comparator 函数(参见 angular documentation)。

我正在使用 angularJS 1.5.6。

这是一个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();
})

我的问题:为什么忽略比较器? (这可以看出,因为从未进行过 console.log() 调用)。这是一个 angularJS 错误吗?

因此,我什至无法使用自定义比较器对对象数组进行排序。

谢谢!

最佳答案

因为 orderBy 中自定义比较器的支持是在 1.5.7 中添加的。

您可以阅读变更日志 here .

如果您检查 documentation对于 1.5.6,您会看到 api 被描述为:

$filter('orderBy')(array, expression, reverse)

1.5.7 中是:

$filter('orderBy')(collection, expression, reverse, comparator)

关于javascript - 为什么 AngularJS `orderBy` 过滤器会忽略 `comparator` 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37877467/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com