Angularjs 缓存服务功能,这样您就不会重复调用它

Angularjs 缓存服务功能,这样您就不会重复调用它,angularjs,Angularjs,有没有一种方法可以在angular中初始化一些服务,这样您就不必重复调用它了?比如说 services.factory('Util', ['$http', function($http) { return { countries: function() { return $http.get('/utils/countries/'); }, ivas: function() { return $http.get('/

有没有一种方法可以在angular中初始化一些服务,这样您就不必重复调用它了?比如说

services.factory('Util', ['$http', function($http) {
   return {
      countries: function() {
          return $http.get('/utils/countries/');
      },
      ivas: function() {
          return $http.get('/utils/ivas/');
      }
   };
}]);
我在几个控制器中使用此服务,加载所有功能需要很长时间


提前感谢。

您可以使用类似的方法,通过调用
Util.init()
确保在初始化应用程序时调用init方法,然后只从服务器获取一次数据,您可以在任何地方使用

services.factory('Util', ['$http', function($http) {

   var me =  {          
      data: {
          countries: [],
          ivas: []
      },
      init: function() {
          me.data.countries = $http.get('/utils/countries/');
          me.data.ivas = $http.get('/utils/ivas/');
      },
      getCountries: function() {
          return me.data.countries;
      },
      getIvas: function() {
          return me.data.ivas;
      }
   };

 return me;
}]);

投否决票而不作解释?很好…您可以更改标题,因为这与服务初始化无关,您只需要缓存方法的响应。。。因此,这不是初始化问题,而是设计问题1。定义全局
me
变量不是一个好主意。。。2.当服务注册时,我可能会更进一步,在
me对象
之外填充countries和iva,在控制器中如何将countries和iva放在两个不同的范围内?$scope.countries=Util.getCountries();//您可以分配给任何想要的作用域,所有控制器中使用相同的数据