1
我的應用出現問題。我有一家工廠,調用prepareStorage
將我的restApi
中的所有靜態變量保存到瀏覽器存儲(使用ngStorage
)。這似乎是這樣的:AngularJS解決所有路由的一些工廠承諾
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
服務使用情況。
在此先感謝。
嗨,謝謝你的幫助。我試了一下 - 首先解決FEX錯誤 - 終於返回的對象getStorage是內部控制的呼叫後未定義(如getStorage> vm.getStorage): constantsService.getStorage() 但響應也是正確的 – Joeker
嗨,你能解釋一下更好?我不明白你的意思*首先解決fex錯誤(例如,getStorage - > vm.getStorage),最後在控制器內部調用後返回的對象getStorage未定義:constantsService.getStorage(),但響應也是正確的* – AndreaM16
PS:在apiService法「稱之爲」具有以下初始化: 'code'call:函數(方法,終端,有效載荷,成功,錯誤,URL){} – Joeker