一尘不染

带嵌套json对象的角度ng-repeat?

angularjs

我有一个JSON对象,表示为:

 {
  "orders" : [
    {
      "ordernum" : "PRAAA000000177800601",
      "buyer" : "Donna Heywood"
      "parcels" : [
        {
          "upid" : "UPID567890123456",
          "tpid" : "TPID789456789485"
        },
        {
          "upid" : "UPID586905486090",
          "tpid" : "TPID343454645455"          
        }
      ]
    },
    {
      "ordernum" : "ORAAA000000367567345",
      "buyer" : "Melanie Daniels"
      "parcels" : [
        {
          "upid" : "UPID456547347776",
          "tpid" : "TPID645896579688"
        },
        {
          "upid" : "UPID768577673366",
          "tpid" : "TPID784574333345"
        }
      ]
    }
  ]
}

我需要在 第二 层上做一个中继器,列出“虚假”数字。

我已经知道如何获得最高水平

<li ng-repeat="o in orders">{{o.ordernum}}</li>

但是我不清楚循环降级的顺序。例如,这是错误的:

<li ng-repeat="p in orders.parcels">{{p.upid}}</li>

我也知道如何 嵌套 中继器来实现这一点,但是在这种情况下,我根本不需要显示顶层。

澄清说明

这里的目标是有一个带有4个“伪”数字的列表(每个包裹有2个,顺序中有2个包裹)。


阅读 252

收藏
2020-07-04

共1个答案

一尘不染

大量搜索不错的简单解决方案以进行动态迭代。我想出了这个

JAVASCRIPT(角度):一个人是嵌套对象的一个​​示例。is_object函数将在HTML视图中使用。

$scope.person = {
    "name": "john",
    "properties": {
       "age": 25,
       "sex": "m"
    },
    "salary": 1000
}

// helper method to check if a field is a nested object
$scope.is_object = function (something) {
    return typeof (something) == 'object' ? true : false;
};

HTML:为简单表格定义模板。第一个TD是显示的键。如果另一个TD(2或3,但绝不两个)都不是对象(数字/字符串),则将显示该值;如果它不是对象,则将再次显示OR。

<table border="1">
<tr ng-repeat="(k,v) in person">
    <td> {{ k }} </td>
    <td ng-if="is_object(v) == false"> {{ v }} </td>
    <td ng-if="is_object(v)">
        <table border="1">
            <tr ng-repeat="(k2,v2) in v">
                <td> {{ k2 }} </td>
                <td> {{ v2 }} </td>
            </tr>
        </table>
    </td>
</tr>
</table>
2020-07-04