抓取键:Angular中JSON对象的值

时间:2016-09-01 21:00:27

标签: angularjs json

我正在尝试循环返回的JSON并根据结果显示图像。我能够提取Feed,但不确定从结果中抓取poster_path并附加到<img ng-src="">路径时我出错了。

JSON:

results: [
{
    poster_path: "/title-of-image.jpg",
    overview: "description of movie",
    release_date: "2016-08-03",
    id: 297761,
    original_language: "en",
    title: "Movie title",
    popularity: 44.788935,
    }
}

我在循环对象并能够在控制台中查看结果,但无法正确获取数据:

var myapp = angular.module('myapp', []);
myapp.controller('demoController', function($scope, $http){
  $http.get("http://api.themoviedb.org/3/movie/now_playing?api_key=ebea8cfca72fdff8d2624ad7bbf78e4c")
    .success(function(response) {
      console.log(response);
      $scope.results = response;
    });
});

<div class="container" ng-repeat="result in results">
  <div class="col-lg-12">
      <img class="col-lg-3 col-md-4 col-xs-12 thumbnail" ng-src="http://image.tmdb.org/t/p/w342" + {{result.poster_path}}></a>
</div>
</div>

这就是我在控制台中看到的内容:

Object {page:1,results:Array [20],dates:Object,total_pages:33,total_results:654}

获取http://image.tmdb.org/t/p/w342 400(错误请求)

结果数组扩展: enter image description here

2 个答案:

答案 0 :(得分:0)

如果查看console.log(响应)的输出,您将看到所需的数据实际上位于名为results的属性中。

{page: 1, results: Array[20], dates: Object, total_pages: 33, total_results: 654}

因此,您想要查看的数据实际上是response.results。那有意义吗?考虑到这一点,我们希望有以下html片段。

<div class="container" ng-repeat="items in results">
      <img ng-src="http://www.source-to-image" + {{items.poster_path}}>
</div>

然后是以下控制器:

var movieapp = angular.module('movieapp', []);
myapp.controller('movieController', function($scope, $http){
  $http.get("http://www.url-to-source")
    .success(function(response) {
      console.log(response);
      $scope.results = response.results;
    });
});

我不能告诉每个poster_path中的内容,所以请告诉我这是否有效。

答案 1 :(得分:0)

我看到了很多问题。 首先,您忘记了响应中的results对象是一个数组(用方括号[]表示)。

results: [

首先必须将对象从数组中取出:

$http.get("http://www.url-to-source")
.success(function(response) {
  console.log(response);
  console.log(response.results[0].poster_path);
});

其次,更重要的是,您没有对数据做任何事情! 这句话绝对没有任何意义:

$scope.results.poster_path;

您没有为其他任何事情分配任何东西。更糟糕的是,$scope.results在这一点上甚至没有被定义。因此,您应该看到cannot read property 'poster_path' of undefined

之类的错误