如何使用AngularJs加载用户位置,可以在整个应用程序中使用?

时间:2015-06-10 15:00:42

标签: angularjs geolocation

在AngularJs中,在我调用get geoLocation并调用远程服务来确定位置(城市,州,国家)后,如何在整个应用程序中重用此数据?

我的意思是,获取geoLocation并确定城市是异步的,理想情况下,我只想做一次这样的事情。之后,每次打开新页面时,我都希望控制器只是让我的geoService获取城市或其他东西。

但是我该怎么办呢?

我试图创建一个服务,它暴露了一个属性,比如城市。在下一个控制器中,属性没有值,我必须回忆这些方法。我认为服务应该是单身人士。

我可以,在第一次加载后使用cookie。

但我真的想知道,别人怎么会处理这种事情?

谢谢!

1 个答案:

答案 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;
          });
     });