我有一个多标签应用程序,有两个单独的控制器。
当输入任一选项卡时,我需要点击一个 API。初始点击后响应不会更新,因此在后续访问该选项卡时无需再次点击它。
我的问题是缓存 API 响应并将其设置为范围变量的正确方法是什么。
目前,我有一个这样的帮助功能设置
var setAndCache = function(scope, cacheFactory, cacheKey, cacheValue) {
scope[cacheKey] = cacheValue;
cacheFactory.put(cacheKey, cacheValue);
};
像这样的缓存工厂设置
factory('TabData', function($cacheFactory) {
return $cacheFactory('tabData');
}).
注入到每个控制器中
controller('TabOne', function($scope, $http, TabData) {
var setupCache = function(response) {
setAndCache($scope, TabData, 'tabOneData', response);
};
if (!TabData.get('tabOneData')) {
$http.get('/path/to/api')
.success(function(response) {
setupCache(response);
});
}
else {
setupCache(TabData.get('tabOneData'));
}
这很好用,但感觉……很脏。有没有更好的方法来实现同样的目标?