Ich arbeite derzeit an einem Projekt, um mir zu helfen, angularjs besser zu verstehen! Ich bin derzeit fest, wie man einen Parameter vom Controller an den Service übergibt.Wie Param von Controller zu Service in AngularJs übergeben werden
In meinem Programm habe ich eine Funktion namens "GetForecastByLocation" erstellt, wenn ein Benutzer eine Eingabe eingibt klickt auf eine Schaltfläche. Von dort möchte ich ihre Eingabe nehmen und sie dann an den http-Aufruf in service.js übergeben.
Ursprünglich war $ http.get in einer langen, riesigen Zeichenfolge der API-URL, aber ich googelte herum und es scheint, dass ich Parameter verwenden sollte, wenn ich versuche, einen Teil der Zeichenfolge zu ändern. Im Moment weiß ich, dass der Parameter in einer bestimmten Stadt fest codiert ist, aber ich möchte neue Eingaben machen und den Wert von vm.city an den $ http.get-Aufruf übergeben.
Wenn jemand helfen kann würde ich es sehr schätzen. Vielen Dank!
controller.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
service.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;
}
}
});
Warum nicht fügen Sie einen Parameter auf 'getApps'? Die Fabrik würde aussehen wie 'getApps: function (city) {... 'und die Callsite wie' Data.getApps ($ scope.city) '' – Will
hi @wilusdaman! Tut mir leid, aber ich bin sehr neu bei angularjs. Wenn Sie den vollständigen Code zeigen können, würde ich es sehr schätzen! Vielen Dank! // Benötige ich in Ihrem Code noch Params? Wenn ich richtig verstehe, fülle der Wert von Funktion (Stadt) q: Stadt, richtig? – hiswendy