2016-05-20 11 views
3

Ich habe eine Controller-Klasse MovieSearchCtrl, in dieser Klasse ist eine Funktion:So rufen Sie den Service vom Controller an?

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

Ich habe auch eine Serviceklasse MovieSearchService, in dieser Klasse eine Funktion ist:

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

In the constructor of the MovieSearchCtrl Klasse Ich mag Rückkehr:

this.results = this.returnMovies(query); 

Wie ich die Rückgabedaten aus der getMovies() Funktion verwenden Sie in die MovieSearchCtrl Klasse?

Antwort

1

Gerade Inject MovieSearchService in MovieSearchCtrl und dann die GetMovies() aufrufen etwa so:

.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; 
    }); 
    }); 
0
.factory('MoviesAPI', function($resource, apiHost) { 
    return $resource(apiHost + '/movies/:Id'); 
}); 

Um Ihren Dienst in der Steuerung Sie es injizieren müssen verwenden.

.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 
       }); 
       }; 


     }; 

    });  

Ich hoffe, das

0

Zwei Schritte hilft.

  1. , wenn es in einem separaten Modul ist, macht es zu einer Abhängigkeit in Ihrer Moduldefinition

    angular.module('MovieSearchCtrl', ['MovieSearchService']); 
    
  2. injiziert es in Ihrer Controller-Definition

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