如何从控制器呼叫服务?

时间:2016-05-20 08:59:05

标签: angularjs typescript

我有一个控制器类MovieSearchCtrl,在这个类中是一个函数:

returnMovies(query): any {
    return MovieSeat.MovieSearchService.getMovies(query);
}

我还有一个服务类MovieSearchService,在这个类中是一个函数:

getMovies(query) {
    let baseUrl = "http://api.themoviedb.org/3/";
    return this.$resource(baseUrl + "search/movie?api_key=a8f7039633f2065942cd8a28d7cadad4&query=" + query + "&callback=angular.callbacks._0");
}

在我要返回的the constructor of the MovieSearchCtrl课程中:

this.results = this.returnMovies(query);

如何将getMovies()函数的返回数据用于MovieSearchCtrl类?

3 个答案:

答案 0 :(得分:1)

将MovieSearchService注入MovieSearchCtrl然后调用getMovies() 像这样:

.controller('MovieSearchCtrl ',function(MovieSearchService, $scope){
      $scope.movies =[];
      $scope.search={}; //ng-model for your input

      MovieSearchService.getMovies($scope.search.query).then(function(res){
      $scope.movies = res.data;
    });
  });

答案 1 :(得分:0)

.factory('MoviesAPI', function($resource, apiHost) {
  return $resource(apiHost + '/movies/:Id'); 
});

为了能够在控制器中使用您的服务,您必须注入它。

.controller('myController', function($routeParams,MoviesAPI) {
        var vm = this;

        vm.movies = [];
        var myMoviesResource = MoviesAPI.query();

        vm.getMovies = function (){
              myMoviesResource.$promise
                .then(function(response) {
                 vm.movies = response;

                }, function(error) {

                    // doSomething
                });
              };


        };

    });    

我希望这会有所帮助

答案 2 :(得分:0)

两个步骤。

  1. 如果它位于单独的模块中,请将其作为模块定义中的依赖项

    angular.module('MovieSearchCtrl', ['MovieSearchService']);
    
  2. 将其注入您的控制器定义

    MovieSearchCtrl(MovieSearchService){
       this.movies = MovieSearchService.getMovies():
    }
    angular.controller('MovieSearchCtrl', MovieSearchCtrl);