Angular - 在ng-repeat中使用orderBy以递增顺序排序

时间:2015-01-11 01:24:14

标签: javascript json angularjs

我有这样的JSON:

"db" : {
    "x" : {
        "0" : "A",
        "1" : "B",
        "2" : "C",
        "3" : "D",
        "4" : "E",
        "5" : "F",
        "6" : "G",
        "7" : "H",
        "8" : "I",
        "9" : "J",
        "10" : "K",
        "11" : "L",
        "12" : "M",
        "13" : "N"
    }

在控制器中我有:

$scope.object = currentObject.get();
$scope.x = $scope.object.db.x;

(currentObject.get()是我从数据库中获取数据的函数,在DB中有我之前编写的JSON)

在视图中:

<div ng-repeat="y in x">{{y}}</div>

我期待结果如下:

<div>A</div>
<div>B</div>
<div>C</div>
etc. etc.

相反,我看到的是:

<div>A</div>
<div>K</div>
<div>L</div>
<div>M</div>
<div>N</div>
<div>B</div>
etc. etc.

如何使用ng-repeat中的orderBy解决此问题?

1 个答案:

答案 0 :(得分:0)

我还没有评论添加到@ charlietfl的回复,但这是一个关于ngRepeat支持按对象键排序的开放性问题:https://github.com/angular/angular.js/issues/8458

除非数据中的键是值的ID,否则数组是确定的方法。你仍然需要一个数组,但你的数据可能看起来像这样;

var x = [
    { id: 0, value: 'A' },
    { id: 1, value: 'B' },
    { id: 2, value: 'C' },
    etc...
]

你可以使用:

<div ng-repeat="obj in x | orderBy: 'id'">{{ obj.value }}</div>