我知道我当前版本的Angular,ng-repeat
自动排序。我的问题是它的排序看起来不正确。
使用带数字键的对象:
{
"1": "value",
"2": "value",
"10": "value"
}
ng-repeat
对其1
,10
,2
进行排序。我熟悉这种排序,并在数字前面抛出0应该修复它。但是,添加0需要额外的代码,需要将其删除才能显示。
同样,转换为数组导致ng-repeat
循环遍历所有空值(3-9)并创建多余元素,并生成重复错误。
如何使ng-repeat
按键对象进行排序,就好像它们是整数一样?
答案 0 :(得分:1)
我无法找到一个没有改变数据结构的解决方案,但这里有一个例子,说明如何通过使用键将对象排序为数组来完成。这是html:
<ul ng-controller="ExampleController">
<li ng-repeat="item in filtered">{{ item.value }}</li>
</ul>
以下是代码:
controller('ExampleController', ['$scope', function($scope) {
$scope.list = {
"1": "1 Value",
"10": "10 Value",
"5": "5 Value",
"2": "2 Value"
};
$scope.$watch('list', function (newVal) {
$scope.filtered = Object.keys(newVal).map(function (key) {
return { key: key, value: newVal[key] };
});
});
}]);
此代码的输出如下所示:
请注意,这会创建一个更容易使用的键/值对对象数组。以下是它的一个有用的例子:http://plnkr.co/edit/Q0BYLeMzTZmd1k8VzTlQ?p=preview