如何在angularjs中修改服务url paramer

时间:2017-03-31 23:48:46

标签: angularjs parameters

我试图通过搜索城市参数来修改城市参数,但我不认为可以通过这种方式修改角度服务。那么我怎么能修改控制器中的服务参数呢?任何帮助都会很棒!

HTML:

<section ng-controller="MainController">

    <form action="" class="form-inline well well-sm clearfix" >
  <span class="glyphicon glyphicon-search"></span>
  <input type="text" placeholder="Search..." class="form-control" ng-model="city" />
  <button class="btn btn-warning pull-right" ng-click="search()"><strong>Search</strong></button>
</form>
    <h1>{{fiveDay.city.name}}</h1>
    <div ng-repeat="day in fiveDay.list" class="forecast">
        <div class="day">
            <div class="weekday">
                <p>{{ day.dt*1000 | date}}</p>
                <!-- <p>{{ parseJsonDate(day.dt)}}</p> -->
            </div>
            <div class="weather"><img ng-src="http://openweathermap.org/img/w/{{day.weather[0].icon}}.png"/></div>
            <div class="temp">{{day.weather[0].description}}</div>
            <div class="temp">Max {{ day.main.temp_max }}°</div>
            <div class="temp">Min {{ day.main.temp_min }}°</div>
        </div>
    </div>
</section>

JS:

var app = angular.module('App', []);
app.controller('MainController', ['$scope', 'forecast', function($scope,    forecast) {
forecast.city="orlando";
  forecast.success(function(data) {
        $scope.fiveDay = data;
     });
  }]);
app.factory('forecast', ['$http', function($http) { 
var city = "orlando";
var key="a1f2d85f6babd3bf7afd83350bc5f2a6";
  return $http.get('http://api.openweathermap.org/data/2.5/forecast?q='+city+'&APPID='+key+'&units=metric&cnt=5') 
    .success(function(data) { 
      return data; 
    }) 
    .error(function(err) { 
      return err; 
    }); 
}]);

2 个答案:

答案 0 :(得分:0)

增加参数回调,回调:JSON_CALLBACK

$http.jsonp("http://api.openweathermap.org/data/2.5/forecast?q='+city+'&APPID='+key+'&units=metric&cnt=5&callback=JSON_CALLBACK").success(function(data){ ... });  

答案 1 :(得分:0)

城市是预测factory中的可变部分,因此需要将其作为参数传递给您推荐

试试这个

var app = angular.module('App', []);
app.controller('MainController', ['$scope', 'forecast', function($scope, forecast) {
    var city = "orlando";
    forecast.getWeatner(city).success(function(data) {
        $scope.fiveDay = data;
    });
}]);
app.factory('forecast', ['$http', function($http) {
    var key = "a1f2d85f6babd3bf7afd83350bc5f2a6";
    return {
        getWeatner: function(city) {
            return $http.get('http://api.openweathermap.org/data/2.5/forecast?q=' + city + '&APPID=' + key + '&units=metric&cnt=5');
        }
    }
}]);