从ng-repeat中删除自动排序

Saj*_*ith 7 angularjs ng-repeat

我有一个json对象.它不按升序排序.

 $scope.myData = {
        "MAX" : "some value",
        "Forms" : "some value",
        "Grids And Tables" : "some value",
        "Navigation" : "some value",
        "Services & APIs" : "some value"
  }
Run Code Online (Sandbox Code Playgroud)

我使用ng-repeat在我的html模板中显示它.我得到了结果,但订单已按升序改变.

Forms
Grids And Tables
MAX
Navigation
Services & APIs
Run Code Online (Sandbox Code Playgroud)

如何防止角度js自动排序?

检查此链接

Muk*_*oni 9

如建议的那样,无法对对象键进行排序.购买你可以对使用这些对象键创建的数组进行排序 -

$scope.keys = Object.keys($scope.myData);
<ul>
  <li ng-repeat="key in keys">
    {{key}} - 
    {{myData[key]}}
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)


dta*_*enc 2

在 JavaScript 中迭代对象键的顺序在技术上是未定义的。虽然大多数浏览器会按定义的顺序迭代对象,但您不应依赖此行为。

在 Angular 的情况下,ng-repeat需要始终对键进行排序,以便即使在事后添加键时顺序也是确定的。无法更改此行为,因为动态添加或删除键时会破坏指令。

如果您需要依赖数据的顺序,那么对象哈希不是正确的数据结构。您应该将数据重新格式化为数组,或者简单地使用键的顺序创建一个单独的数组,然后对其进行 ng-repeat 。使用键来索引对象。