【问题标题】:Nested ng repeat, natural sorting keys嵌套 ng 重复,自然排序键
【发布时间】:2013-12-12 20:47:23
【问题描述】:

我有可以采用以下格式的数据:

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 11 2 22
1 11 2 22

因为它是通过键的字符串比较来排序,而不是键的数值

我真正想要的是:

1 2 11 22
1 2 11 22

有什么建议吗?

【问题讨论】:

  • 这可能会为您指明正确的方向:stackoverflow.com/questions/19287716/…
  • 数据不保证按反正排序。键的顺序将取决于实现(V8 或 Spidermonkey),但这不是您应该依赖的。您应该提取控制器中的键并以您想要的方式对其进行排序,而不是使用ng-repeat(k, v) in data 表单。
  • 我不认为您发布的内容是正确的 JS -- 我的意思是 var data 部分。
  • @Cherniv 感谢您的精彩帖子,我认为这对我有用。
  • 是的,这是一个非常简单实用的解决方案,它对我有用!

标签: angularjs key iteration natural-sort


【解决方案1】:

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

http://jsfiddle.net/rsmclaug/BHF9C/

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

<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"}
];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2014-08-02
    • 2014-04-20
    • 2010-11-22
    • 2012-11-20
    • 2018-10-22
    相关资源
    最近更新 更多