我尝试保存应用程序从http.get请求获取的数据,并在用户下次打开应用程序时加载它而不将设备连接到互联网。
我的数据从Http.get请求加载得很好,但是没有保存或加载。
我不确定为什么我的代码不起作用。这是我的代码:
.controller('announcementCtrl', function($scope, $http) {
$scope.data = [];
$scope.infiniteLimit = 1;
$scope.doRefresh = function() {
$http.get('http://www.example.com')
.success(function(data) {
$scope.data = data;
window.localStorage.setItem("data", JSON.stringify(data));
})
.error(function() {
$scope.data = data;
if(window.localStorage.getItem("data") !== undefined) {
$scope.data = JSON.parse(window.localStorage.getItem("data"));
}
});
}
答案 0 :(得分:1)
在error
内,$scope.data = data;
可能会将$scope.data
设置为undefined
,除非您有一些我们不知道的全局data
变量。我猜你的error
函数应该更像
.error(function() { // You don't get any data from here, so setting anything based on it will produce undesired results
var data = window.localStorage.getItem("data")
if(data && typeof JSON.parse(data) === "object") {
$scope.data = JSON.parse(data); // Set the data from local storage
}
});