我网站上的用户可以搜索movietitle,然后下拉列表会显示所有相应的标题。然后他们可以点击标题将该电影添加到他们的监视列表中。
当他们点击标题时,下面的addMovie
功能会触发。
$scope.addMovie = function() {
'http://api.themoviedb.org/3/movie/206647?api_key=a8f7039633f2065942cd8a28d7cadad4&append_to_response=releases'
// Search for release dates using the ID.
var base = 'http://api.themoviedb.org/3/movie/';
var movieID = $(event.currentTarget).parent().find('.movieID').text()
var apiKey = 'a8f7039633f2065942cd8a28d7cadad4&query='
var append_to_response = '&append_to_response=releases'
var callback = 'JSON_CALLBACK'; // provided by angular.js
var url = base + movieID + '?api_key=' + apiKey + append_to_response + '&callback=' + callback;
$http.jsonp(url,{ cache: true}).
success(function (data, status, headers, config) {
if (status == 200) {
// $scope.movieListID = data.results;
$scope.movieListID = data;
console.log($scope.movieListID)
} else {
console.error('Error happened while getting the movie list.')
}
}).
error(function (data, status, headers, config) {
console.error('Error happened while getting the movie list.')
});
createMovie.create({
title: $scope.movieListID.original_title
}).then(init);
};
http请求有效,在控制台中我可以找到对象和original_title
但创建方法失败。
TypeError: Cannot read property 'original_title' of undefined
at Scope.$scope.addMovie
所以我猜测title: $scope.movieListID.original_title
不是直接保存JSON数据的正确方法吗?
答案 0 :(得分:1)
尝试这种方式。
success(function(data, status, headers, config) {
if (status == 200) {
// $scope.movieListID = data.results;
$scope.movieListID = data;
console.log($scope.movieListID);
createMovie.create({ title: $scope.movieListID.original_title }).then(init);
} else {
console.error('Error happened while getting the movie list.')
}
})
你在createMovie.create
之外拨打http.jsonp
这是异步调用。你可以在http
调用中调用它或使用promise链接它。
答案 1 :(得分:0)
在发出$ http请求并检查一次之前,请将空对象分配给$ scope.movieListID。由于吊装可能导致问题。我无法检查,因为没有小提琴或钢笔。
$ scope.movieListID = {};