javascript - Angularjs 传递数据

标签 javascript angularjs imdb

忙于构建一个视频网站,我目前正在重写代码,但我无法解决这个问题。所以我有一个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/

相关文章:

javascript - 当用户在输入文本框中键入内容时,绑定(bind)丢失的一种方式

javascript - 将编码后的 url 作为参数传递 javascript 函数

javascript - Promise 访问 firebase 时返回错误类型

javascript - 解决 AngularJS 中 mdDialog 和 API 响应之间的同步问题

angularjs - 错误: [$http:baddata] error

api - 哪个网站免费提供带API的电影信息?

C++ Curl,如何读取返回数据?

node.js - nodejs 试图从返回函数读取 jpg 数据流

javascript - 创建新作用域时,具有子指令的父指令将不起作用

javascript - "this"返回函数而不是对象