Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检索angularjs cachefactory.get值_Javascript_Angularjs_Cachefactory - Fatal编程技术网

Javascript 如何检索angularjs cachefactory.get值

Javascript 如何检索angularjs cachefactory.get值,javascript,angularjs,cachefactory,Javascript,Angularjs,Cachefactory,我正在将数据存储到$cacheFactory,如下所示: $scope.loginCache = $cacheFactory.get('login') || $cacheFactory('login') ; $scope.loginCache.put("smsData",$scope.smsData) ; 稍后,我将使用以下工具检索它: $scope.loginCache = $cacheFactory.get('login') || $cacheFactory('login')

我正在将数据存储到$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)输出:


最后,我试图检索:value[0]。data

这是因为您的
$scope.smsData
是promise对象,而不是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
检索数据时,您将获得所需的对象。

看起来您正在处理异步回调。试着像承诺一样解决它:
$scope.smsData.then(function(res){console.log(res.value)})
是的,就是这样。这是保留承诺,而不是保留承诺的结果。
$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) ;
});