我有一个
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" } ] } ] }
我需要在第二级做一个中继器,一个“upid”数字的列表.
我已经知道如何获得顶级
< li ng-repeat =“o in orders”> {{o.ordernum}}< / li>
但是我不清楚顺序将循环水平下降.例如,这是错误的:
< li ng-repeat =“p in orders.parcels”> {{p.upid}}< / li>
我也知道如何嵌套中继器来获得这个,但在这种情况下,我不需要显示顶级.
澄清
这里的目的是要有一个4“upid”数字的列表(每个包裹有2个,订单中有2个包裹).
解决方法
搜索很多很好的和简单的解决方案来动态迭代.我想出了这个
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,但从不同时)将显示值,如果它不是一个对象(数字/字符串),或者如果它的一个对象再次循环.
<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>