gpt4 book ai didi

javascript - 如何在 AngularJs 中将参数从 Controller 传递到服务

转载 作者:太空宇宙 更新时间:2023-11-04 15:29:46 25 4
gpt4 key购买 nike

我目前正在开发一个项目来帮助我更好地理解 angularjs!我目前陷入如何将参数从 Controller 传递到服务的困境。

在我的程序中,当用户输入内容并单击按钮时,我创建了一个名为“GetForecastByLocation”的函数。从那里我想获取他们的输入,然后将其传递给 service.js 中的 http 调用。

最初,$http.get 位于 API url 的一个长字符串中,但我用 google 搜索了一下,似乎我应该在尝试更改字符串的一部分时使用参数。截至目前,我知道参数被硬编码到特定城市,但我想获取新输入并将 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 来接受参数:

.factory('Data', function($http, $q){
// ...
return {
getApps: function(city){
promise = $http.get(URL, {
params: {q: city}
}).then( /* ... */ );
// ...
return promise;
}
};
});

然后将你的论点传递给它:

$scope.getForecastByLocation = function(myName) {
$scope.city = myName;
Data.getApps($scope.city);
}

关于javascript - 如何在 AngularJs 中将参数从 Controller 传递到服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44893476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com