AngularJS $resource & cache-Fabrik

Habe ich umgesetzt eckig $Ressource mit benutzerdefinierten Funktionen und Parameter wie folgt:-

.factory('CandidateService', ['$resource', function ($resource) {
    return $resource("api/:action/:id", {},
    {
        'getCandidates': { method: "GET", params: { action: "Candidate" }, isArray: true },
        'getCandidate': { method: 'GET', params: { action: "Candidate", id: "@id" } }
    });
}]);

Und ich bin verbraucht im controller wie folgt:-

.controller('Controller', ['CandidateService', function ($scope, CandidateService) {
  $scope.candidateList = [];

  CandidateService.getAll(function (data) {
    $scope.candidateList = data;   
  });
}]);

Dieser funktioniert absolut in Ordnung. Jetzt muss ich cache die Daten aus der api in die CandidateService Fabrik, so dass es nicht geladen wird eveytime ich bewege mich zwischen den Controllern.

So, ich dachte, ich würde etwas tun, wie folgt:-

.factory('CandidateService', ['$resource', function ($resource) {
    var Api = $resource("api/:action/:id", {},
    {
        'getCandidates': { method: "GET", params: { action: "Candidate" }, isArray: true },
        'getCandidate': { method: 'GET', params: { action: "Candidate", id: "@id" } }
    });

    var candidateDataLoaded = false;
    var candidateData = [];

    return {
        getCandidates: function () {
            if (!candidateDataLoaded) {
                Api.getAll(function (data) {
                    angular.copy(data, candidateData);
                });
            }
            return candidateData;
        }
    }

}]);

Aber ich kann Sie nicht einfach diese zu arbeiten. Ich denke es hat etwas zu tun mit Winkel-Fabrik als singleton.

Ist mein Ansatz korrekt zu implementieren des caching?

möglich, Duplikat der angularjs: wie caching, resource-Objekt?
Große und prägnante Antwort hier: stackoverflow.com/a/16080092/1049693

InformationsquelleAutor Yashvit | 2013-09-21

Schreibe einen Kommentar