无法在AngularJS中将变量从控制器传递到服务

时间:2015-11-08 14:30:16

标签: angularjs

我正在尝试将邮政编码传递给使用此zip运行API调用的服务。问题是,每次输入zip和搜索时,邮政编码都不会正确传递给服务,我的HTTP请求会以邮政编码的形式发送为未定义。

这是我的控制器:

angular.module('MainCtrl', []).controller('MainController', ['$scope', 'Reps', function($scope, Reps) {
  $scope.search = function() {
    Reps.search($scope.zipCode)
      .success(function(response) {
        console.log('Success ' + response);
      })
      .failure(function(response) {
        console.log('Failure ' + response);
      })
  }
}]);

我的服务:

angular.module('MainService', []).factory('Reps', ['$http', function($http) {
  var root = 'https://www.api.com/locate?';
  var apiKey = '&apikey=foo';
  var fields = '&fields=bar';

  return {
    search: function(zipCode) {
      var query = root + zipCode + apiKey + fields;
      return $http({
        method: 'POST',
        url: query
      })
    }
  }
}])

我的表格:

<form method="post" enctype="text/plain" class="form-inline">
  <div class="form-group">
    <label for="searchForRep">Zip Code:</label>
    <input type="text" class="form-control" id="searchForRep" ng-model="zipCode" placeholder="Zip Code (11216)">
  </div>
  <button ui-sref="reps" ng-click="search()" type="submit" class="btn btn-default">Submit</button>
</form>

因此,如上所述,邮政编码似乎没有正确传递给我的服务,这导致HTTP请求发送为:

https://www.api.com/locate?undefined&apikey=foo&fields=bar

知道我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

根据您的代码,它应该有效。它正在我的plunker上工作,除了你没有将你的服务模块添加到你的控制器模块,如:

angular.module('MainCtrl', ['MainService']).controller('MainController',

此处的Plunker:http://plnkr.co/edit/Ey3K5eF5h56dqWTji5uX?p=preview