2014-04-20 17 views
6

Ho bisogno di visualizzare alcuni dati da un database all'utente. I dati sono in un file JSON e ha una dimensione piuttosto grande. La dimensione del file json è approssimativamente di circa 15 MB. Ho creato un servizio e ho usato l'API promessa per fare una richiesta di successo e caricare i dati e mostrarli all'utente facendo su ng-repeat su un div. Ora, come capisci, la pagina mostrerà i dati solo quando il file è disponibile e fare una richiesta per recuperare un file da 15 MB richiede molto tempo. Vedo in alcuni casi Firefox interrompe semplicemente il caricamento del file dopo un po 'di tempo. Ora la mia domanda è qual è il modo angolare di fare un simile compito.Angularjs ottiene la richiesta di un enorme file json

Sto pensando di fare qualcosa come prima mostrando solo alcune voci da file json e poi sullo scorrimento il resto della pagina verrà popolato dai dati rimanenti ma immagino che non sarà possibile perché quando la richiesta get ha fatto, per prima cosa scaricherà completamente il file e poi visualizzerà i dati?

Angular fornisce qualcosa chiamato ng-cloak ma è solo per sfuggire alla sfarfallio. C'è qualcosa come ng-cloak in angolare che posso usare? Eventuali altre idee o come affrontare tali scenari o qual è il modo angolare di realizzare questo?

+0

Qualsiasi motivo per cui non è possibile utilizzare l'impaginazione ?? – harishr

+0

impaginazione, entra in immagine quando ho caricato i dati. – Mike

+0

Dovrebbe essere prima di caricare i dati, intendevo paginazione lato server ... Si ottengono solo i dati paginati dal server e, se necessario, si ottengono più dati dal server. Non caricare troppi dati all'avvio .. aiuterà mantenere la pagina reattiva .. – harishr

risposta

1

Fai in modo che il tuo backend consegni il file in blocchi, in modo che il frontend angolare possa recuperarne una parte alla volta.

Qualcosa come:?

/backend/GetEntries saltare = 500 & count = 100

L'avere il frontend ripetutamente chiamare il back-end, mentre il conteggio fino saltare e aggiungere i risultati che stanno ottenendo di nuovo a tutto ciò che già nel frontend.

+0

backend non è in discussione qui. Ho un database locale di file json – Mike

+0

Sì, il backend è sicuramente una chiave per questa domanda.Vedi il commento di Vladimirs sopra –

5

In base alle vostre esigenze di gestire essenzialmente un enorme carico utile JSON. FWIW si hanno due opzioni:

  • Il server supporta HTTP/JSON in streaming:

    creare un angolare onreadystatechange gestore e utilizzare un parser di streaming JSON come oboe.js

  • Il server non supporto streaming HTTP/JSON

    Fare ciò che chiunque altro è suggestin g e fornire un accesso impaginato a tale payload in modo che il browser possa caricarlo a blocchi su richiesta.

+0

Sto caricando json anche come file locale e non proviene da un server di dominio incrociato – Mike

+0

come stai usando la tua applicazione angolare? lo si esegue da un server Web (locale) come http: // localhost: 9000 o semplicemente si apre un file html utilizzando lo schema URI del file: file: // c: /my_html_file.html? –

+0

Lo eseguo su un host locale. cosa intendevo dire che il json si trova nella stessa directory in cui si trovano i miei file js. Non sto portando Json da un altro dominio. Lo sto eseguendo localmente con tutti i file sotto il mio controllo .. – Mike

Problemi correlati