В настоящее время я работаю над проектом, который поможет мне лучше понять angularjs! В настоящее время я застрял в том, как передать параметр из контроллера в службу.
В моей программе я создал функцию под названием «GetForecastByLocation», когда пользователь вводит ввод и нажимает кнопку. Оттуда я хочу получить их ввод, а затем передать его http-вызову в service.js.
Первоначально $http.get был в длинной гигантской строке URL-адреса API, но я погуглил, и кажется, что я должен использовать параметры при попытке изменить часть строки. На данный момент я знаю, что параметр жестко закодирован для определенного города, но я хочу получить новый ввод и передать значение vm.city вызову $http.get.
Если кто-то может помочь, я был бы очень признателен. Благодарю вас!
контроллер.js
var app = angular.module('weatherApp.controllers', [])
app.controller('weatherCtrl', ['$scope','Data',
function($scope, Data) {
$scope.getForecastByLocation = function(myName) {
$scope.city = myName;
Data.getApps($scope.city);},
Data.getApps(city)
.then(function(data)){
//doing a bunch of things like converting units, etc
},
function(res){
if(res.status === 500) {
// server error, alert user somehow
} else {
// probably deal with these errors differently
}
}); // end of function
}]) // end of controller
сервис.js
.factory('Data', function($http, $q) {
var data = [],
lastRequestFailed = true,
promise;
return {
getApps: function() {
if(!promise || lastRequestFailed) {
promise = $http.get('http://api.openweathermap.org/data/2.5/weather?',{
params: {
q: Tokyo,
}
})
.then(function(res) {
lastRequestFailed = false;
data = res.data;
return data;
}, function(res) {
return $q.reject(res);
});
}
return promise;
}
}
});
getApps
? Завод будет выглядеть какgetApps: function(city){ ...
, а сайт вызова какData.getApps($scope.city)
. - person wbadart   schedule 03.07.2017