1

我正在尝试使用 Rotten Tomato API 创建电影搜索,但我不知道如何将其$scope.nameFilter作为输入附加到我的服务中。我想做这样的事情:

看法

<input type="text" ng-model="nameFilter" placeholder="Search..."/>

服务

     angular.module('MovieFeederApp.services', [])
      .factory('rtAPIservice', function($http, $scope) {

        var rtAPI = {};

        rtAPI.getMoviesAll = function($scope.nameFilter) {
          return $http({
            method: 'JSONP', 
            url: 'http://api.rottentomatoes.com/api/public/v1.0/movies.json?q='+ $scope.nameFilter +  '&page_limit=10&page=1&apikey=MyKey&callback=JSON_CALLBACK'
          });
        }
return rtAPI;
});
4

1 回答 1

1

我会使用一个附加到控制器的函数,它调用传递参数的服务函数。

这是一个例子:

HTML:

<input type="text" ng-model="filter" />
<button ng-click="search(filter)">Search Movie</button>

控制器 JS:

app.controller('ExampleCtrl', function($scope,rtAPIservice ){

  $scope.filter = '';
  $scope.filteredMovies = [];

  $scope.search = function(filter){
    rtAPIservice.getFilteredMovies(filter)
      .then(function(data){
        $scope.filteredMovies = data;
      });
  }

})

工厂服务

app.factory('rtAPIservice', function($http) {

  var rtAPI = {};

  rtAPI.getMoviesAll = function(filter) {
    return $http({
      method: 'JSONP', 
      url: 'http://api.rottentomatoes.com/api/public/v1.0/movies.json?q='+ filter +  '&page_limit=10&page=1&apikey=MyKey&callback=JSON_CALLBACK'
      });
    }

  return rtAPI;
});
于 2016-04-16T10:05:17.133 回答