我需要根据值对$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>
请帮我解决这个问题
答案 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>