2015-07-20 41 views
0

工作,我有以下localStorage的不是在應用程序初始化

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 /#設備重新加載應用程序時,所有數據饋送都會加載回來。

我沒有在桌面chrome瀏覽器的問題。

它發生在我刪除應用程序,並在設備

reintialize任何幫助讚賞

感謝

+0

ajax調用是異步的。所以,在你調用get方法的時候set方法會被應用。 – binariedMe

+0

你有什麼想法如何解決它謝謝 – shrijan

+0

只有當set方法已經成功調用時調用get方法...可能你可以調用成功get方法本身。嘗試重塑流程。 – binariedMe

回答

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調用的響應被返回,因此你的初始化。

+0

謝謝了,我很愚蠢 – shrijan