我正在尝试将从服务中获取的数据遍历到我的控制器中的范围,但我无法完成最后一步(我认为)。我添加了一些步骤,看看是否可能在服务的实际请求之前将数据插入范围,但事实并非如此。
步骤1:激活控制器中的addMovie功能。 第2步:我创建一个空的movieListID范围。
$scope.addMovie = function() {
console.log ('Step 1: start addMovie function in controller')
console.log ('Step 2: create empty movieListID scope')
$scope.movieListID = {};
console.log ($scope.movieListID)
movieAdd.add()
.then(function(response){
$scope.movieListID = response;
console.log ('Step 4: Succes inserting data into scope' + $scope.movieListID)
})
.catch(function(response) {
console.log ('No search reposone')
});
}
第3步:从服务中获取数据。
(function(){
"use strict";
angular.module('addMovieseat')
.factory('movieAdd',
function($http, $q){
return{
add: function(){
var deferred = $q.defer();
'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) {
deferred.resolve(data.results);
console.log ('Step 3: Succes getting data')
} 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.')
deferred.resolve(false);
});
$(".search_results").fadeOut(250);
return deferred.promise;
}
}
})
})();
第4步:
movieAdd.add()
.then(function(response){
$scope.movieListID = response;
console.log ('Step 4: Succes inserting data into scope' + $scope.movieListID)
但是当我到达第4步时,我在控制台日志中返回了一个“未定义”,它引用了$scope.movieListID
此外,如果我检查Chrome中的网络标签,我会看到json请求已完成。所以数据在服务内部。但是将其纳入范围是行不通的。