在AngularJs中,在我调用get geoLocation并调用远程服务来确定位置(城市,州,国家)后,如何在整个应用程序中重用此数据?
我的意思是,获取geoLocation并确定城市是异步的,理想情况下,我只想做一次这样的事情。之后,每次打开新页面时,我都希望控制器只是让我的geoService获取城市或其他东西。
但是我该怎么办呢?
我试图创建一个服务,它暴露了一个属性,比如城市。在下一个控制器中,属性没有值,我必须回忆这些方法。我认为服务应该是单身人士。
我可以,在第一次加载后使用cookie。
但我真的想知道,别人怎么会处理这种事情?
谢谢!
答案 0 :(得分:1)
你应该寻找跨多个控制器共享服务数据, 类似的东西:
app.service('cache', function ($http, $q) {
var mycache={};
return {
getdata: function (key) {
var deferred = $q.defer();
if (mycache[key]) {
deferred.resolve(mycache[key]);
}
else {
$http.get('api/your_location').then(function (data) {
mycache[key] = data.data;
deferred.resolve(mycache[key]);
});
}
return deferred.promise;
}
}
});
app.controller('test', function ($scope, cache) {
cache.getdata('cache').then(function (data) {
$scope.data = data;
});
});
app.controller('test1', function ($scope, cache) {
//since data is already cached now it will server the cached data
cache.getdata('cache').then(function (data) {
$scope.data = data;
});
});