2016-05-16 46 views
1

我想显示一个JSON代码到一个HTML表格。我有这样的JSON:我如何显示在HTML角度嵌套的JSON元素

posts:[ 
 
    { 
 
    "category":[], 
 
    "status":[] 
 
    
 
    }, 
 
    { 
 
    "category": 
 
    [ 
 
     { 
 
     "ID_post":"2", 
 
     "category":"5 Reasons", 
 
     "ID_cat":"1" 
 
     
 
     }, 
 
     { 
 
     "ID_post":"2", 
 
     "category":"Advertising", 
 
     "ID_cat":"2" 
 
     
 
     } 
 
    ], 
 
    "status": 
 
    [ 
 
     { 
 
     "ID_post":"2", 
 
     "status":"Approved", 
 
     "ID_stat":"1", 
 
     "color":"red" 
 
     
 
     }, 
 
     { 
 
     "ID_post":"2", 
 
     "status":"Placed", 
 
     "ID_stat":"2", 
 
     "color":"#1800fb" 
 
     
 
     } 
 
    ] 
 
    
 
    } 
 
]

我想说明的状态的颜色为HTML表是这样的:

<tr> 
 
    <th>Web Status</th> 
 
</tr> 
 
<tbody ng-repeat="post in posts | startFrom: start | limitTo: limit"> 
 
    <tr> 
 
    <td>{{post.status}}</td> 
 
    </tr> 
 
</tbody>

它返回的东西像这样在第二篇文章中:

[{"ID_post":"2","status":"Approved","ID_stat":"1","color":"red"},{"ID_post":"2","status":"Placed","ID_stat":"2","color":"#1800fb"}]

但我需要每个岗位的颜色。我怎么才能得到它?我试着用post.status.color,但它不起作用。 有人可以帮我吗? 谢谢!

回答

1

如果要在表中显示的所有是各状态下的颜色,则可以采取一种方法是捕捉“状态”的数据在一个单独的阵列,例如$scope.statuses = posts[1].status。然后依次通过该数组中的HTML:

<tbody ng-repeat="status in statuses| startFrom: start | limitTo: limit"> 
    <tr> 
    <td>{{status.color}}</td> 
    </tr> 
</tbody> 

以您目前的数据结构,posts是具有两个元件的阵列。 ng-repeat直接循环通过此数组中的每个元素。第一个元素posts[0]是一个具有两个空数组属性的对象。因此,第一个{{post.status}}是空的。第二个元素​​又是一个对象,其属性为“category”和状态,每个对象都有填充数组。通过第二个元素,{{post.status}}将在posts[1].status中显示所有数据。

所以,如果您需要显示的只是每种状态的颜色,那么将posts[1].status捕获到单独的变量中将是最容易的。如果您需要显示类别数据以及状态数据,则可能需要将这两个数组合并成一个数组。看到这个例子:In Angular, how do you loop through two arrays to populate a third?

0

状态是一个数组。

要访问的每一个你需要定义一个指数,例如状态的颜色:

post.status[0].color 

你的数据看起来很奇怪,我认为这个问题是该职位已超过一个状态。