gpt4 book ai didi

javascript - angular js 从 $http 获取变量是服务

转载 作者:行者123 更新时间:2023-11-30 00:10:22 24 4
gpt4 key购买 nike

您好,我已经创建了一个从远程服务器获取 json 的服务,我不需要获取结果并将其设置为服务的属性,但我不知道如何从函数中获取属性

app.service('varService',['$http', function($http){
var ip = myip;
window.city = '';
$http.get('http://ip-api.com/json/'+ip)
.then(function(data) { window.city = data.data.city; });

this.city=city;
}]);

属性 this.city 没有收到任何值,但是当我在 .then() 中执行 console.log 时,值存在,如何解决问题,如何从 $http.then() 中获取值(value)?

最佳答案

因为 $http.get 返回一个 promise ,当您分配城市值时,请求实际上还没有从网络服务器返回。

您需要从您的服务中返回 promise ,而不是在您的调用 Controller 中处理您的 .then() 回调处理程序。

app.service('varService',['$http', function($http){
var ip = myip;
this.getIp = $http.get('http://ip-api.com/json/'+ip);
}]);

// controller
varService.getIp.then(function(data) { window.city = data.data; });

这是 John Papa AngularJS Styleguide 推荐的方法它允许您将多个 promise 链接在一起。

关于javascript - angular js 从 $http 获取变量是服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747539/

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