使用过滤器对 ng-repeat$scope对象进行排序

Using filter to sort $scope object in ng-repeat

本文关键字:对象 排序 scope 过滤器 ng-repeat      更新时间:2023-09-26

我需要根据值对ng-repeat中的$scope对象进行排序。我能够通过自定义过滤器将其转换为array来实现排序,但键或值只能推入array。我需要键和值才能在 UI 中显示它:

$scope.list = {
    test:58uy43: "test:one", 
    test:24ht76: "test:two", 
    test:26df90: "test:three", 
    test:39fg67: "test:four", 
    test:18ds65: "test:five"
}
<div ng-repeat="(key,value) in list">{{key}} : {{value}}</div>

请帮帮我解决这个问题

...ng-repeat="o in data |过滤器:过滤器 |orderBy:sortPredicate:sortReverse"...

其中"filter"是

您要搜索的值(filter),"sortPredicate"是您想要排序的列名,"sortReverse"是指示记录顺序的布尔值。

我相信

最干净的方法是在控制器中定义一个返回排序列表的函数。

$scope.getListSorted = function() {
    $scope.list.sort(function(a, b) { return /*comparison*/; });
};

对于数值,如果要升序排序,则应a.attr - b.attr比较
对于字符串值,比较a.attr.localeCompare(b.attr)

然后您可以在视图中使用它

<div ng-repeat="(key,value) in getListSorted()">{{key}} : {{value}}</div>