Angularjs 嵌套ng重复、自然排序键

Angularjs 嵌套ng重复、自然排序键,angularjs,key,iteration,natural-sort,Angularjs,Key,Iteration,Natural Sort,我有以下格式的数据: var data = { 0:[1:"a", 2:"b", 11:"c", 22:"d"], 1:[1:"e",2:"f",11:"g",22:"h"] } 如果我这样做: <div ng-repeat="(key, value) in data"> <div ng-repeat="(innerKey, innerValue) in value"> {{innerKey}} </div> <

我有以下格式的数据:

var data = 
{
0:[1:"a", 2:"b", 11:"c", 22:"d"],
1:[1:"e",2:"f",11:"g",22:"h"]
}
如果我这样做:

<div ng-repeat="(key, value) in data">
    <div ng-repeat="(innerKey, innerValue) in value">
        {{innerKey}}
    </div>
    <br/>
</div>
因为它是通过键上的字符串比较排序的,而不是键的数值

我真正想要的是:

1 2 11 22
1 2 11 22

有什么建议吗

如果你能稍微重新构造一下数据,你可以试试这个。我删除了嵌套数据以简化核心问题

此外,数据原样不是有效的数组语法

<div ng-repeat="item in data | orderBy:'key'">
    {{item.key}} - {{item.value}}
</div>

$scope.data = [
    {key: 1, value: "a"}, 
    {key: 12, value: "c"}, 
    {key: 2, value: "b"}, 
    {key: 22, value:"d"}
];

{{item.key}}-{{item.value}
$scope.data=[
{键:1,值:“a”},
{键:12,值:“c”},
{键:2,值:“b”},
{键:22,值:“d”}
];

可能是这样,这将为您指明正确的方向:数据不能保证按任何方式排序。键的顺序将取决于实现(V8或Spidermonkey),但这不是您应该依赖的。您应该提取控制器中的键,并按照您想要的方式对它们进行排序,而不是使用数据中的
(k,v)来进行
ng repeat
。我认为您发布的内容不正确,JS--我是说
var data
部分。@Cherniv感谢这条很棒的线程,我认为这对我来说是可行的。是的,这是一个非常简单和有用的解决方案,它对我很有用!
<div ng-repeat="item in data | orderBy:'key'">
    {{item.key}} - {{item.value}}
</div>

$scope.data = [
    {key: 1, value: "a"}, 
    {key: 12, value: "c"}, 
    {key: 2, value: "b"}, 
    {key: 22, value:"d"}
];