Как получить значения angularjs cachefactory.get

Я храню данные в $cacheFactory как таковые:

  $scope.loginCache = $cacheFactory.get('login') || $cacheFactory('login') ;
  $scope.loginCache.put("smsData",$scope.smsData) ;

И позже извлекаю это с:

  $scope.loginCache = $cacheFactory.get('login') || $cacheFactory('login') ;
  $scope.smsData = $scope.loginCache.get('smsData') ;

Однако я не могу получить доступ к различным элементам $scope.smsData, Если вы поместите его в console.log, там будут показаны все значения, но по какой-то причине я не могу получить доступ к данным - что я делаю неправильно?

console.log($scope.smsData) ;  // displays full object
console.log($scope.smsData.value) ;  // `undefined`
console.log($scope.smsData[0]) ;  // `undefined`
console.log($scope.smsData.value[0]) ; // `undefined`

Результаты console.log($scope.smsData):

Promise {$$state: {…}}
   $$state:
      status:1
      value:Array(2)
         0:{table: "smsSent", data: {…}}
         1:{apiStatus: true}

В конечном итоге я пытаюсь получить: значение [0].data

1 ответ

Это потому что ваш $scope.smsData это объект обещания, а не объект JSON. Что вы можете сделать, это:

при хранении:

$scope.loginCache = $cacheFactory.get('login') || $cacheFactory('login') ;
// first resolve the promise and then store in cache
$scope.smsData.then(function(response){
     $scope.loginCache.put("smsData",response) ;
});

Итак, когда вы будете получать данные из этого $cacheFactory, вы получите желаемый объект.

Другие вопросы по тегам