我的代码如下
angular
.module('core')
.factory('jsonstorage',function($rootScope,$http,$localStorage){
return {
set: function(entidy, value) {
$rootScope.$storage = $localStorage;
$rootScope.$storage[entidy] = value;
},
get: function(entidy) {
if (typeof $rootScope.$storage != 'undefined') {
return $rootScope.$storage[entidy];
}
}
}
});
控制器
angular
.module('core')
.controller('HomeController', function($scope,$http,$rootScope,$localStorage,jsonstorage) {
var url = "http://test.com/?feed=xml";
$http.get(
url,
{transformResponse:function(data) {
// convert the data to JSON and provide
// it to the success function below
var x2js = new X2JS();
var json = x2js.xml_str2json( data );
return json;
}
}).
success(function(data, status, headers, config) {
jsonstorage.set('eventlist', data.feed.events.event);
}).
error(function(data, status, headers, config) {
console.error('Error fetching feed:', data);
});
$scope.feed.items = $rootScope.storage['eventlist']
console.log(jsonstorage.get('eventlist'))
console.log($scope.storage['eventlist']);
});
问题:
在Android设备上安装应用程序时,存储返回未定义的值。但是当我通过chrome重新加载应用程序时:// inspect /#devices将所有数据Feed重新加载回来。
我在桌面上没有Chrome浏览器的问题。
当我删除应用并将其重新设置为设备
时,它会一直发生任何帮助表示赞赏
由于
答案 0 :(得分:0)
每次删除应用时,都会删除本地存储。无法在应用删除之间保留数据。
此外,您正在进行的AJAX调用是异步调用,您必须在.success()方法中初始化$scope.feeds.items
,而不是如下所示:
angular.module('core')controller('HomeController',
function($scope,$http,$rootScope,$localStorage,jsonstorage) {
var url = "http://test.com/?feed=xml";
$http.get(url, {transformResponse:function(data) {
var x2js = new X2JS();
var json = x2js.xml_str2json( data );
return json;
}
}).
success(function(data, status, headers, config) {
jsonstorage.set('eventlist', data.feed.events.event);
$scope.feed.items = $rootScope.storage['eventlist'];
console.log(jsonstorage.get('eventlist'))
console.log($scope.storage['eventlist']);
}).
error(function(data, status, headers, config) {
console.error('Error fetching feed:', data);
});
});
此外,当您刷新页面时,您的代码正在运行,因此到那时,您的第一个AJAX调用的响应将被返回,从而初始化$scope.feeds.items
。