我在此模板中有addMovie
个功能,
%ul#showresults
%li.search_results{"ng-if" => "movie.release_date && movie.poster_path", "ng-repeat" => "movie in movieList | orderBy:'-release_date'"}
.addmovie{"ng-click" => "addMovie(movie)"}
%span
Add Movie
当用户点击.addmovie
div时,addMovie(movie)
功能会触发,
$scope.wishlistID = [];
$scope.addMovie = function(movie) {
$scope.wishlistID.push({id: movie.id});
var movieID = $scope.wishlistID[0].id;
console.log (movieID)
movieAdd.add(movieID)
.then(function(response){
$scope.movieListID = response;
此函数将已添加的动画记录的ID推送到名为wishlistID
的范围中,并将其传递给变量。然后它在add
服务中请求一个名为movieAdd
的函数,并将movieID
变量随之传递,
var service = {};
var baseUrl = 'http://api.themoviedb.org/3/movie/';
function httpPromise (url) {
var deferred = $q.defer();
$http({
method:'JSONP',
url: url
})
.success(function(data){
deferred.resolve(data);
})
.error(function(){
deferred.reject();
});
return deferred.promise;
}
service.add = function(movieID){
return httpPromise(
baseUrl + movieID + '?api_key=a8f7039633f2065942cd8a28d7cadad4&query=' + '&append_to_response=releases&callback=JSON_CALLBACK')
}
该服务执行JSONP请求并返回放入movieListID
范围的数据。
现在,如果我添加一部电影,它会将该影片的ID存储到变量中,例如140048
,但如果我输入新的搜索查询并添加不同的影片,则变量movieID
仍然具有140048
值,导致应用再次添加相同的电影(即使有新的搜索操作和新电影!)
答案 0 :(得分:1)
看来你继续抓住wishListID数组的相同索引,这是第一个索引(你添加的第一个电影)。
var movieID = $scope.wishlistID[0].id;
为什么不更新此行以匹配:
movieAdd.add(movie.id)
而不是:
movieAdd.add(movieID)
编辑:
您是否只是想找到添加电影的关键值?而不是电影ID'对象包含的,通过函数传递的。