У меня есть код ниже
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://проверяю/# устройства, все данные загружаются.
У меня не проблема с браузером Chrome на рабочем столе.
Это происходит все время, когда я удаляю приложение и повторно инициализирую его на устройстве
Любая помощь оценивается
благодаря
Каждый раз, когда вы удаляете свое приложение, локальное хранилище удаляется вместе с ним. Невозможно сохранить данные между удалениями приложений.
Кроме того, вызов AJAX, который вы делаете, является асинхронным вызовом, вы должны инициализировать свой $scope.feeds.items
в методе.success(), но не вне этого:
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
инициализируется.