我在渲染JSON对象时缺少什么 - AngularJS

时间:2016-01-01 05:58:05

标签: angularjs json

在此Plunker为什么我无法访问

{{ cartItem.selectedSeller.registered_name }}

代码

<div ng-repeat="cartItem in cartItems track by $index">
  {{ cartItem.selectedSeller }} // I can access this

  <h2> Registered Seller Name:</h2>
  {{ cartItem.selectedSeller.registered_name }} // but not this
  ===============================
</div>

据我所知,我们将[]放在数组的情况下,我们可以使用.访问对象属性。我肯定在这里错过了一些小小的逻辑。我想显示每个购物车产品的卖家名称。

2 个答案:

答案 0 :(得分:1)

您的json格式无效。请仔细检查here

"selectedSeller":"{\"registered_name\": \"6bc0317c-0b8b-4b39-96d4-c3377e64acfd_seller\", \"rating\": 1, \"id\": 64, \"delivers_to\": \"[{\\\"city_name\\\": \\\"Pune\\\", \\\"country\\\": \\\"India\\\", \\\"pin_code\\\": \\\"411057\\\"},{\\\"city_name\\\": \\\"Kolkata\\\", \\\"country\\\": \\\"India\\\", \\\"pin_code\\\": \\\"411058\\\"},{\\\"city_name\\\": \\\"Delhi\\\", \\\"cou

通过键selectedSeller访问字符串但不访问对象,其中显示register_name属性

此外,最好使用json过滤器,但它取决于您使用的角度版本。

{{ foo | json }}

在这里我可以看到关于解析json的建议,它也可以解决你的问题,但是我不建议你这样做,以一致的格式保存json后端数据,而不是通过解析器在客户端重新映射它或一些自定义方法。

答案 1 :(得分:0)

cartItem.selectedSeller是一个字符串,只需在控制器中将字符串解析为类似JSON:

$scope.cartItems = [];
$http({
    method: 'GET',
    url: 'data.json'
  }).success(function(data) {
    data.forEach(function(a){
      a.selectedSeller = JSON.parse(a.selectedSeller);
      $scope.cartItems.push(a);
    });
  });