2017-12-27 13 views
1

Ich bin neu in Angularjs und versuchen zu lernen cachefactory. Ich habe Probleme beim Lesen der Antwortdaten mit cachefactory. Ab sofort versuche ich es direkt nach dem Aufruf der Rest-API auf der Konsole auszudrucken. Mein Javascript-Controller ist:So extrahieren Antwort Körper von Angularjs CacheFactory

(function() { 
    "use strict"; 
    angular 
     .module("productManagement") 
     .controller("WelcomeCtrl", 
      [ '$scope', 
       '$http', 
       '$timeout', 
       "$interval", 
       "$cacheFactory", 
       WelcomeCtrl ]) 

    function WelcomeCtrl($scope, $http, $timeout, $interval, $cacheFactory) { 
    var onUserComplete = function(response) { 

      $scope.fname = response.data.firstName; 

      console.log("response.firstName:"+response.data.firstName); 

      var $httpDefaultCache = $cacheFactory.get('$http'); 

      var cachedData = $httpDefaultCache.get('./webapi/details'); 
      console.log("cachedData print:"+cachedData); 

     var onError = function(reason) { 
      $scope.error = "Could not fetch the data"; 
     }; 

     // GET The values from Rest API 
     $http({ 
      method: 'GET', 
      url: './webapi/details', 
      cache: true 
     }) 
     .then(onUserComplete, onError);   

    } 
}()); 

Die Ausgabe von dem Webservice ist. Ich kann die Ausgabe im Netzwerk sehen und auch auf Konsole ausdrucken:

{"id":"1234","firstName":"NoName","lastName":"Newbie"} 

Wenn auf der Konsole die zwischengespeicherten Daten Druck druckt es aus HTTP-Statuscode zusammen mit einigen Objekten:

*cachedData in add training:200,{"id":"1234","firstName":"NoName","lastName":"Newbie"},[object Object],OK* 

Ich bin nicht in der Lage, die JSON-Antwort von oben zu extrahieren. Ich habe die unten versucht, aber keiner von ihnen arbeitet:

//console.log("cachedData.data print:"+cachedData.data); 
//console.log("cachedData.data.id print:"+cachedData.data.id); 
//console.log("cachedResponse print:"+cachedData.response.id); 

ich auch in $ httpDefaultCache.get versucht haben, die vollständige URL zu geben, aber es funktioniert immer noch nicht.

Gibt es eine Lösung dafür? Ich habe den gesamten Code nicht kopiert, um es kurz zu halten. Vielen Dank im Voraus!

Antwort

0

Ich habe eine ähnliche Frage hier gefunden. Hast du es auch untersucht? How to cache an http get service in angularjs

+0

Danke für die Antwort Andy. Ich glaube, das ist, was ich im Code mehr oder weniger mache, mit der Ausnahme, dass ich das Schlüssel-Wert-Paar nicht verwende und die gesamte Antwort zwischenspeichere. Fehle ich hier etwas Offensichtliches? – NoNameNewbie

Verwandte Themen