ng-repeat和大JSON中的键值

时间:2017-04-08 10:36:02

标签: html json html-lists

我有像这样的人:

JSON“myWelcome”

[
    {"BACKGROUND": {
        "BACK": {
            "NAME": "asd"},
        "AGE": "13",
        "YEAR": "2016"
    }},
    {"NAILS": {
        "BACK": {
            "NAME": "asd"},
        "AGE": {
            "AG": "14"},
        "YEAR": "2014",
        "CENT": "dsds"
    }}
]

我需要做的是在<ul>或表中显示来自此json的所有内容,但不是按名称显示。我的HTML:

<ul ng-repeat="(key, value) in myWelcome">
                         <ul ng-repeat="val in value">
                             <ul ng-repeat="(o, values) in val">
                                 <li>{{o}}</li><li>{{values}}</li>
                                 </ul>
                             </ul>
                         </ul>

它不太合适,因为“BACK”中的“NAME”显示全部。 提前感谢您的回答。

2 个答案:

答案 0 :(得分:0)

您可以使用此代码使其正常工作,但它只适用于此数据示例或类似示例,JSON中的任何更改都可能会破坏它。

<ul ng-repeat="(key, value) in myWelcome">
    <ul ng-repeat="val in value">
        <ul ng-repeat="(o, values) in val">
            <li>{{o}}</li><li ng-if="key=='NAILS'&& o=='AGE'" >{{values.ag}}</li><li ng-if="!key=='NAILS'&& o=='AGE'">{{values}}</li>
        </ul>
    </ul>
</ul>

答案 1 :(得分:0)

您可以先递归删除密钥为NAME的所有属性,然后使用ng-repeat进行迭代。

<强>样本

&#13;
&#13;
var jsonObj = [
    {"BACKGROUND": {
        "BACK": {
            "NAME": "asd"},
        "AGE": "13",
        "YEAR": "2016"
    }},
    {"NAILS": {
        "BACK": {
            "NAME": "asd"},
        "AGE": {
            "AG": "14"},
        "YEAR": "2014",
        "CENT": "dsds"
    }}
];

function removeMeta(obj) {
  for(prop in obj) {
    if (prop === 'NAME')
      delete obj[prop];
    else if (typeof obj[prop] === 'object')
      removeMeta(obj[prop]);
  }
};

removeMeta(jsonObj);

console.log(jsonObj);
&#13;
&#13;
&#13;