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

时间:2016-01-20 14:52:14

标签: javascript arrays angularjs sorting angular-filters

我需要根据值对$scope中的ng-repeat对象进行排序。我可以通过自定义过滤器将其转换为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>

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

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

$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>

答案 1 :(得分:1)

... ng-repeat =“o in data | filter:filter | orderBy:sortPredicate:sortReverse”...

其中'filter'是您要搜索的值(过滤器),'sortPredicate'是您要排序的列名称,'sortReverse'是表示记录顺序的布尔值。< / p>