Angularjs 缓存服务功能,这样您就不会重复调用它
有没有一种方法可以在angular中初始化一些服务,这样您就不必重复调用它了?比如说Angularjs 缓存服务功能,这样您就不会重复调用它,angularjs,Angularjs,有没有一种方法可以在angular中初始化一些服务,这样您就不必重复调用它了?比如说 services.factory('Util', ['$http', function($http) { return { countries: function() { return $http.get('/utils/countries/'); }, ivas: function() { return $http.get('/
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();//您可以分配给任何想要的作用域,所有控制器中使用相同的数据