忙于构建一个视频网站,我目前正在重写代码,但我无法解决这个问题。所以我有一个controller.js,我想在其中执行所有请求,在我的main.js中,我想接收数据并解析。
所以我的controller.js看起来像:
'use strict';
angular.module('Movie.services', []).service('Movie', ['$q', '$http', function($q, $http) {
var API_URL = 'http://api.themoviedb.org/3/person/';
var API_KEY = '?api_key=xxx';
this.findCast = function( id ) {
var cast = [];
$http.get(API_URL, {
params: {
query: id,
api_key: API_KEY
}
}).then(function(result) {
angular.forEach(result.data, function(item) {
cast.push(item);
});
});
}
}]);
JSON:http://docs.themoviedb.apiary.io/reference/people/personid/get 我的 main.js 看起来像:
app.controller("Cast", function($scope, $http, $routeParams, Page, Movie) {
$scope.getCast = [];
var person_id = $routeParams.person_id;
Movie.findCast(person_id).then(function(result){
$scope.getCast = result ;
});
});
我的问题是如何从 main.js 中的controller.js 接收数据,以便我可以解析它。我现在得到的是一个错误
TypeError: Cannot read property 'then' of undefined
我不确定这是否是构建我的应用程序的正确基础设施,因为在controller.js中我想进行多个调用,例如我想获取类型转换、电影、电视剧等。
Controller.js 看起来像这样(不知道这是否是正确的方法)
this.findCast = function( id ) { }
this.getMovies = function( id ) { }
this.getSeries = function( id ) { }
this.getPopulair = function( id ) { }
最佳答案
问题是您没有从您的服务中返回任何 Promise,您可以随后调用它。做这样的事情。
'use strict';
angular.module('Movie.services', []).service('Movie', ['$q', '$http', function($q, $http) {
var movieService = {
findCast : function( id ) {
var API_URL = 'http://api.themoviedb.org/3/person/';
var API_KEY = '?api_key=xxx';
var cast = [];
var promise = $http.get(API_URL, {
params: {
query: id,
api_key: API_KEY
}
}).then(function(result) {
angular.forEach(result.data, function(item) {
cast.push(item);
});
return cast;
});
return promise;
},
// getMovies : function(){}
// similarly write other functions.
}
return movieService;
}]);
关于javascript - Angularjs 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832146/