【发布时间】:2013-12-19 15:33:57
【问题描述】:
我不是 Angular 的专业人士,我还在学习。希望我能在这里得到一些帮助。
我想构建一个具有不同视图的应用程序。我需要检测浏览器并从服务器获取一些数据。为此,我创建了一个服务,我在其中完成这项工作。
我的愿望是使用服务所有视图的数据。如何正确存储和缓存数据以便我可以在所有视图/控制器中使用它?
这是我到目前为止所得到的。
我的服务:
.factory('DataService', function($http, $q, $timeout) {
var data = { };
return {
notes: function() {
// This exposed private data
return data;
},
addItem: function(itemname, itemvalue) {
// This is a public function that modifies private data
data[itemname] = itemvalue;
}
getPlatform: function() {
var getPlatformData = function() {
var deferred = $q.defer();
BrowserDetect.init();
deferred.resolve(BrowserDetect.OS);
return deferred.promise;
};
return {
getPlatformData: getPlatformData
};
},
getServerData: function() {
//if(!data.getServerData){
var getData = function() {
var deferred = $q.defer();
$http({
url: 'js/fakeGet.json',
method: 'get',
dataType: 'json',
}).success(function(data) {
data.scanResponse = data;
deferred.resolve(data);
})
return deferred.promise;
};
return {
getData: getData
};
//}
// return data.scanResponse;
}
};
});
我的控制器:
DataService.getPlatform().getPlatformData().then(function(platform) {
console.log('Another browserDetect request');
$scope.platform = platform;
DataService.addItem("platform", $scope.userPlatform);
});
【问题讨论】:
标签: javascript http angularjs caching promise