【发布时间】:2017-03-23 04:35:48
【问题描述】:
我的应用有问题。我有一个工厂,它调用prepareStorage 将我的restApi 中的所有静态变量保存到浏览器存储中(使用ngStorage)。好像是这样的:
angular.module('panelApp')
.factory('prepareStorage', ['$localStorage', '$sessionStorage', 'apiService',
function($localStorage, $sessionStorage, apiService) {
var promise = {};
var load = function() {
apiService.call('head', 'staticTypes.json', [], function(response, status, head) {
if(angular.isUndefined($localStorage.staticTypes) || $localStorage.staticTypes.updatedAt < new Date(head()['last-modified'])){
delete $localStorage.staticTypes;
promise = apiService.call('get', 'statictypes.json', [], function (response) {
$localStorage.staticTypes = response;
}, function (errorObj) {
console.log(errorObj.error.message);
});
}
});
return promise;
return {
load: load()
};
}]);
然后我声明了第二个工厂constantsService,它给了我存储变量:
angular.module('panelApp')
.factory('constantsService', ['$localStorage', '$q', 'prepareStorage', '$timeout',
function($localStorage, $q, prepareStorage, $timeout) {
var output = {};
var deferred = $q.defer();
$timeout(function() {
deferred.resolve(prepareStorage.load, function() {
output = {
status: $localStorage.staticTypes.status
};
});
}, 1000);
return output;
}]);
在这种情况下,我的麻烦来了。
如果没有 重新刷新。这意味着,在第一次站点刷新后, 控制器找不到
$localStorage.staticTypes.status对象, 只有当我第二次刷新时才会这样做。
我正在寻找一种避免使用$timeout 服务的干净解决方案。
提前致谢。
【问题讨论】:
标签: angularjs promise factory ng-storage