Dove il mio servizio dovrebbe eseguire il recupero dei dati?

1

Ho un servizio angolare che recupera i dati che verranno utilizzati da più controller. Voglio solo recuperare i dati dal db una volta e poi fare in modo che il servizio memorizzi i dati in un oggetto che i controllori possono fare riferimento attraverso il servizio.

Sto usando ui-router con viste multiple e nidificate. Dove devo mettere il mio servizio di recupero in modo che i miei controllori possano fare riferimento in sicurezza ai dati sapendo che il servizio è stato scaricato con successo?

Ad esempio:

Dove inserirò questo:

myAngularService.GetDbData(DataId).success(function (response) {
            this.myDbData = response;
        });

In modo che nei miei controller posso fare questo:

angular.module('myWebApp.controllers').
    controller('myCtrl', function($scope, myAngularService) {
        $scope.myDbData = myAngularService.myDbData;
    });

Ho pensato di utilizzare una risoluzione nel mio stato principale che ospita tutti i miei altri sottostati, tuttavia non sono sicuro di come passare un parametro al mio servizio in questo modo (in questo esempio il parametro sarebbe DataId ).

    
posta Legion 22.03.2016 - 21:37
fonte

2 risposte

1

Se è possibile memorizzare nella cache i dati per tutta la durata della pagina, mettere la chiamata a GetDbData nella stessa posizione dell'inizializzazione per il contenuto della pagina.

Se non puoi o non vuoi memorizzare nella cache i dati, mettilo il più vicino possibile al luogo in cui lo utilizzerai.

Ricorda che le chiamate Ajax ai dati esterni possono richiedere del tempo per il completamento, facendo aspettare l'utente mentre sta accadendo.

    
risposta data 23.03.2016 - 01:04
fonte
0

Un modo migliore per ottenere la funzionalità richiesta sarà usare la cache di $ http. Semplicemente, converti la richiesta $ http per recuperare i dati da db per essere ciabatta.

per es.

$ http.get (url, {cache: true});

In questo modo, puoi semplicemente iniettare e chiamare il metodo del servizio in qualsiasi controller che desideri e ottenere i dati memorizzati nella cache. La prima richiesta $ http riceverà i dati da db e li memorizzerà anche nella cache. Le chiamate successive restituiranno i dati memorizzati nella cache.

    
risposta data 01.01.2018 - 12:50
fonte

Leggi altre domande sui tag