我使用Sails.js作为我的项目的基础,到目前为止,我尝试使用AngularJS模块化每个UI元素。
虽然我认为这种方法很好,因为它允许我尽可能地重用我的代码,但最终我必须向服务器发出许多HTTP请求,因为每个模块都不与其他模块共享数据
那么,什么是减轻请求数量并在所有控制器之间共享数据的解决方案呢?
我想到了两种不同的解决方案:
答案 0 :(得分:1)
我发现您可以使用$cacheFactory
(文档here)在AngularJS中缓存HTTP请求。
一种简单的方法是:
$http({
url : '/your/path',
method : 'POST',
cache : true
})
.success(function (data) {
data;
})
可以在coderwall和this StackOverflow question上找到更多信息。
答案 1 :(得分:1)
angular service通常用于在控制器之间共享数据。这是一个简单的例子。请注意,它只会首次请求获取数据,之后它将使用存储的值。
app.factory('dataService', function () {
var service = {};
var data;
service.getData = function () {
if (!data) {
//populate data via http get or whatever
}
return data;
}
return service;
});
然后可以将此服务注入任何控制器。
答案 2 :(得分:0)
你看过angular-cache and angular-data了吗? 它既是内置角度数据通信层的包装器,也是客户端数据存储的包装器。