2015-09-13 150 views
0

我需要从JSON获取嵌套产品到我的html <div ng-repeat="order in orders"></div>我尝试了很多获取产品值(名称,描述等)的版本,但它们都不起作用。这个怎么做 ?从json获取嵌套值angularJS

JSON:

[ 
    { 
     "id":3, 
     "date":"00:00:00", 
     "user":{ 
     "id":1, 
     }, 
     "orderState":{ 
     "id":1, 
     }, 
     "products":[ 
     { 
      "id":1, 
      "name":"Bosch POF 1200", 
      "description":"1200W", 
      "enabled":true, 
      "price":459, 
     }, 
     { 
      "id":9, 
      "name":"Graphite 58G782", 
      "description":"a", 
      "enabled":true, 
      "price":429, 
     } 
     ] 
    } 
] 

控制器

OrdersService.retrieveAllByCurrentUser().then(function(response) { 
    $scope.orders = response.data; 
    console.log(response.data); 
}, function(error) { 
    registerError(error, 'retrieving all orders'); 
}); 
+1

你最好的尝试是什么?你期望它做什么以及它做了什么?发布您的代码。 –

回答

2

创建一个嵌套ng-repeat这样的访问products信息:

<div ng-repeat="order in orders"> 
    <div ng-repeat="product in order.products"> 
    <h1 ng-bind="product.name"></h1> 
    <p ng-bind="product.description"></p> 
    </div> 
</div> 

对于每个order将进入order.products和环信息如product,那么您可以通过点号表示访问product中的信息,例如product.name

1

可以在HTML做嵌套ng-repeat

<div ng-repeat="order in orders"> 
    <div ng-repeat "product in order.products"> 
     <span>{product.name}}</span> 
     <span>{{product.description}}</span> 
    </div> 
</div> 
3

的NG-重复指令创建一个新的范围,这意味着你应该能够循环通过其内的同类产品:

<div ng-repeat="order in orders"> 
<div ng-repeat="product in order.products"> e.g. {{product.name}} </div> 
</div> 

我也会建议编写一个处理这种东西的指令,因为你的代码很快就不可读。尽管我不是Angular的专家,但请不要对此表示担忧。

+0

除非要在代码中的多个位置使用指令,否则不需要指令。 – Chrillewoodz

+0

@Chrillewoodz你是绝对正确的。我只是想指出它,因为如果你问这样一个简单的问题,你可能也有兴趣学习一些更好的项目的良好做法:) –