我有一个这样的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()是我从数据库中获取数据的函数,并且在数据库中有我之前编写的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修复此问题?

最佳答案

我尚无法添加@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>

关于javascript - Angular -在ng-repeat中使用orderBy以递增顺序进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27883044/

10-12 12:38
查看更多