我目前正在開發一個項目以幫助我更好地理解angularjs!我目前堅持如何從控制器傳遞參數到服務。如何將param從控制器傳遞到AngularJs中的服務
在我的程序中,當用戶輸入一個輸入點擊一個按鈕時,我創建了一個名爲「GetForecastByLocation」的函數。從那裏我想接受他們的輸入,然後將它傳遞給service.js中的http調用。
最初,$ http.get是一個很長的API網址字符串,但我搜索了一下,似乎我應該在嘗試更改字符串的一部分時使用參數。截至目前,我知道參數被硬編碼到一個特定的城市,但我想要接受新的輸入並將vm.city的值傳遞給$ http.get調用。
如果有人可以幫助,我將不勝感激。謝謝!
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;
}
}
});
爲什麼不加一個參數'getApps'?該工廠看起來像'getApps:function(city){...'和調用網站像'Data.getApps($ scope.city)' – Will
hi @wilusdaman!對不起,但我對angularjs很陌生。如果你能顯示完整的代碼/詳細說明,我將不勝感激!謝謝! //在你的代碼中,我是否仍然需要params?如果我理解正確,函數(城市)的值填入q:city,對不對? – hiswendy