Json 在angularJS中存储https数据
我正在制作一个web应用程序,同时学习AngularJS,但在存储整个应用程序所需的数据时遇到了问题。在我的一个控制器中,我有一个POST调用,它返回一个JSON对象,其中包含我在应用程序的不同部分中需要的数据,我不知道如何存储整个JSON对象,以便以后可以访问它。如何存储JSON对象,以便稍后在其他控制器中访问它?我是否应该费心去做这件事,或者我应该稍后再发出一个POST请求来获取我当时需要的数据(发出POST/get请求是否很昂贵) 您当然不想继续对相同的数据发出POST请求(假设数据没有更改) 您可以将其存储在$rootScope上,将$rootScope传递给需要访问数据的任何控制器,并通过以下方式进行访问:Json 在angularJS中存储https数据,json,angularjs,rest,Json,Angularjs,Rest,我正在制作一个web应用程序,同时学习AngularJS,但在存储整个应用程序所需的数据时遇到了问题。在我的一个控制器中,我有一个POST调用,它返回一个JSON对象,其中包含我在应用程序的不同部分中需要的数据,我不知道如何存储整个JSON对象,以便以后可以访问它。如何存储JSON对象,以便稍后在其他控制器中访问它?我是否应该费心去做这件事,或者我应该稍后再发出一个POST请求来获取我当时需要的数据(发出POST/get请求是否很昂贵) 您当然不想继续对相同的数据发出POST请求(假设数据没有更
var whatever = $rootScope.yourObject;
例如:
//Assuming a controller makes the POSt request (not in app.run etc)
function yourController($rootScope, $http) {
$http.post("desired/url", { params: "foo-bar"}).then(function(response){
//Check for errorz etc.
$rootScope.yourObject = response.data; //Assign to rootscope
});
}
function someOtherController($rootScope){
//Fetch the item from $rootScope, assuming the POST request was
// already made.
var valueFromPreviousRequest = $rootScope.yourObject;
}
最佳方法是使用自定义服务层进行数据获取,并避免控制器中的
$http
。在这种情况下,添加缓存机制非常容易
例如,简单服务:
app.factory('stats', function($q, $http) {
// Hold cache in local variable
var cache = null;
return {
load: function() {
return cache ? $q.when(cache) : $http.get(statsUrl).then(function(response) {
cache = response.data;
return data;
});
}
};
});
然后,您可以在控制器中使用此服务:
app.controller('someController', function(stats) {
stats.load().then(function(data) {
console.log(data);
});
});
请注意,服务
load
方法在两种情况下的返回方式:当缓存已可用时和当尚未加载数据时(第一次调用)。$rootScope
不应用于此目的,简单的服务将是更好的答案$http
还允许设置缓存:true
同意,这是“邪恶全球”的东西。然而,我不会创建一个只用于存储数据的服务,同样,我也不会在$rootScope上设置一个函数-我认为有两种情况下,rootScope可以存储数据。因此,是的,9/10次我同意你的看法-我使用服务作为经验法则,尽管没有给出数据的上下文(它是否意味着可以在整个应用程序中使用?)我不会说rootScope不应该用于此目的。