AngularJS,Ng-repeat改变/改变Json数组的顺序

时间:2014-03-18 05:01:18

标签: javascript json angularjs angularjs-ng-repeat

亲爱的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>

任何参考?

提前致谢! 克里斯;

2 个答案:

答案 0 :(得分:2)

chris:键的排序是按字母顺序排列的,这在最近发布的Angular 1.4中得到了修复。如下面的官方Angular文档中所述:

  

1.4版删除了字母排序。我们现在依赖订单   运行for key in myObj

时由浏览器返回

https://docs.angularjs.org/api/ng/directive/ngRepeat

答案 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';