亲爱的SO朋友:
2014年3月18日。我正在处理这种情况,在使用ng-repeat时,数组中的元素(我从Json字符串中获取)会改变原始顺序。
为了清楚起见,数组中的第一个变量与order_id和人名相关,而最后一个变量与信用信息相关。
我对信息的命令完全搞砸了,可能是按字母顺序排列的,我不确定。
代码中没有奇怪的东西:
<li ng-repeat="(variable, valor) in records" >
<a href="">{{variable}}: </a>
<a href="">{{valor}}</a>
</li>
任何参考?
提前致谢! 克里斯;
答案 0 :(得分:2)
chris:键的排序是按字母顺序排列的,这在最近发布的Angular 1.4中得到了修复。如下面的官方Angular文档中所述:
1.4版删除了字母排序。我们现在依赖订单 运行
时由浏览器返回for key in myObj
答案 1 :(得分:0)
您可以使用orderBy
过滤器执行此操作。我在下面给出一个例子;
假设你有一个像这样的控制器:
function Ctrl($scope) {
$scope.friends =
[{name:'John', phone:'555-1212', age:19},
{name:'Mary', phone:'555-9876', age:10},
{name:'Mike', phone:'555-4321', age:21},
{name:'Adam', phone:'555-5678', age:35},
{name:'Julie', phone:'555-8765', age:29}]
$scope.predicate = '-age';
}
在HTML中:
<div ng-controller="Ctrl">
<table class="friend">
<tr>
<th>Name
<th>Phone Number</th>
<th>Age</th>
</tr>
<tr ng-repeat="friend in friends | orderBy:predicate">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
</tr>
</table>
</div>
结果如下:
Name Phone Number Age
Adam 555-5678 35
Julie 555-8765 29
Mike 555-4321 21
John 555-1212 19
Mary 555-9876 10
我认为这样的事情可以解决你的问题。
如果您想根据年龄对升序进行排序,只需在控制器中更改此行
即可$scope.predicate = '+age';