在另一个ng-reapeat的值中重复json

时间:2015-10-23 10:13:45

标签: javascript angularjs

我有一个ng-repeat,它遍历一个JSON并呈现一个表格。我想要做的是迭代JSON本身的值。但它的行为就像一个字符串。

<tr
    ng-repeat="(key,value) in event.kibana._source track by $index"
    ng-class-odd="'odd'">
        <td>{{key}}</td>
        <td>
            <span>{{value}}</span>
            <span ng-repeat="(k,val) in value track by $index">{{k}}|{{val}} </span>
        </td>
</tr>

“value”是一个JSON。 td中的结果如下所示:

  

{“bezeichnung”:“Basis”,“name”:“Basis”,“id”:16} 0 | {1 |“2 | b 3 | e 4 | z 5 | e   6 | i 7 | c 8 | h 9 | n 10 | u 11 | n 12 | g 13 |“14 |:15 |” 16 | B 17 | a 18 | s 19 | i 20 | s   21 |“22 |,23 |” 24 | n 25 | a 26 | m 27 | e 28 |“29 |:30 |” 31 | B 32 | a 33 | s 34 | i   35 |第36 |“37 |,38 |” 39 | i 40 | d 41 |“42 |:43 | 1 44 | 6 45 |}

当然这不是我想要的。我想迭代JSON而不是字符串。我怎么能这样做?

编辑:

这就是JSON的样子:

{
    "fold":11,
    "id":64894760,
    "entities":[{"bezeichnung":"Basis","name":"Basis","id":16}]
}

2 个答案:

答案 0 :(得分:0)

你必须解析JSON。(例如JSON.parse(yourString))https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

答案 1 :(得分:0)

尝试删除track by $index。请阅读此处的文档:ngRepeat

<tr id="{{key}}"
    ng-repeat="(key,value) in event.kibana._source"
    ng-class-odd="'odd'">
        <td>{{key}}</td>
        <td>
            <span>{{value}}</span>  //array of objects, [{"bezeichnung":"Basis","name":"Basis","id":16}]
            <div ng-repeat="val in value track by val.id">  //single value in 'value' array
                <span ng-repeat="(k,v) in val track by k">{{k}}|{{v}} </span>
            </div>
        </td>
</tr>

问题是“value”是一个对象数组,你有“基础”作为两个键的值。因此,如果使用对象中的键进行跟踪,AngularJS可以区分。 我认为“id”键对于特定值是唯一的。