我正在尝试循环返回的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(错误请求)
答案 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