Creazione di un'app Web da zero utilizzando AngularJS e Firebase parte 7

Nella parte precedente di questa serie di tutorial, abbiamo implementato il modificare e Elimina postare funzionalità nella pagina di benvenuto. In questa parte del tutorial, aggiungeremo un indicatore di caricamento Ladda nella nostra applicazione. Aggiungere un indicatore di caricamento è essenziale in quanto rende l'applicazione più interattiva. Sistemeremo anche un paio di problemi minori man mano che il tutorial avanza.

Iniziare

Iniziamo clonando la parte precedente del tutorial da GitHub.

git clone https://github.com/jay3dec/AngularJS_Firebase_Part6.git

Dopo la clonazione del codice sorgente, accedere alla directory del progetto e installare le dipendenze richieste.

cd AngularJS_Firebase_Part6 installazione npm

Una volta installate le dipendenze, avviare il server.

inizio di npm

Puntare il browser su http: // localhost: 8000 / app / # / home e si dovrebbe avere l'applicazione in esecuzione.

Aggiunta dell'indicatore di caricamento Ladda

Ladda è un concetto di interfaccia utente che unisce un indicatore di caricamento in pulsanti, rendendolo interattivo e di facile utilizzo. Dal sito ufficiale di Ladda,

Un concetto di interfaccia utente che unisce gli indicatori di caricamento nell'azione che li ha invocati. Principalmente inteso per l'uso con moduli in cui fornisce agli utenti un feedback immediato su submit piuttosto che lasciarli a chiedersi mentre il browser fa il suo dovere.

Creare una direttiva per Ladda

Per utilizzare Ladda nella nostra applicazione, creeremo una direttiva AngularJS per l'indicatore di caricamento Ladda. Le direttive sono una delle caratteristiche principali di AngularJS e controllano il rendering di HTML all'interno dell'applicazione.

Aprire app / home / home.js e creare una semplice direttiva come mostrato di seguito: 

.direttiva ('laddaLoading', [function () return link: function (scope, element, attrs) ;]);

Inizieremo e arresteremo l'indicatore di caricamento Ladda basato su a $ portata variabile chiamata login.loading. quando login.loading è vero, mostreremo l'indicatore di caricamento e quando sarà falso interromperà l'indicatore di caricamento. Quindi, in HomeCtrl, definire una variabile chiamata accesso e assegnarlo al $ scope.login variabile.

var login = ; $ scope.login = login;

Successivamente includi i file CSS e JavaScript da ladda dist in home / home.html come mostrato di seguito:

  

Dopo aver aggiunto lo script e i riferimenti di stile sopra, modificare il file Registrati pulsante in home.html come mostrato:

Come puoi vedere nel codice sopra, abbiamo aggiunto la direttiva laddaLoading al pulsante e sono passati login.loading. Imposteremo e ripristineremo il passato login.loading per cambiare il display dell'indicatore di caricamento. Abbiamo anche aggiunto alcuni stili, Segoe-ui-lightLadda-button, per modellare gli indicatori di caricamento Ladda.

Ora dentro la direttiva collegamento funzione, aggiungere il seguente codice per mantenere un orologio sul login.loading scope variabile e avvia e ferma l'indicatore di conseguenza.

.direttiva ('laddaLoading', [function () return link: function (scope, elemento, attrs) var Ladda = window.Ladda; var ladda = Ladda.create (elemento [0]); // Controllo login.loading per modificare l'ambito. $ watch (attrs.laddaLoading, function (newVal, oldVal) // In base al valore start e stop dell'indicatore if (newVal) ladda.start (); else ladda.stop (); );;]);

Successivamente, quando l'utente fa clic su Registrati pulsante abbiamo bisogno di impostare l'indicatore di caricamento. Quindi, in HomeCtrl dentro il Registrati funzione, impostare login.loading a vero per avviare l'indicatore di caricamento.

login.loading = true;

Allo stesso modo quando l'accesso successo o fallimento chiamata viene chiamato, abbiamo bisogno di impostare il login.loading false per interrompere l'indicatore di caricamento.

login.loading = false;

Salva tutte le modifiche e riavvia il server. Inserisci un indirizzo email e una password validi e dovresti essere in grado di vedere l'indicatore di caricamento in azione.

Allo stesso modo, possiamo aggiungere il Ladda indicatore di caricamento per il pulsante Registrati in registro / register.html. Includere i riferimenti richiesti in registro / register.html come mostrato: 

  

Modifica il Registrare pulsante per includere la direttiva come mostrato:

Dentro il RegisterCtrl Aggiungi il accesso variabile per impostare e ripristinare l'indicatore di caricamento Ladda.

 var login = ; $ Scope.login = login;

Ora, per abilitare l'indicatore di caricamento quando l'utente fa clic su Registrare pulsante, aggiungi il seguente codice al Iscriviti funzione.

login.loading = true;

Per disabilitare l'indicatore di caricamento, attivo successo o fallimento callback aggiungere il seguente codice.

login.loading = false;

Salva tutte le modifiche e prova a registrare un nuovo account. Facendo clic su Registrare pulsante dovresti essere in grado di vedere l'indicatore di caricamento.

Allo stesso modo, possiamo aggiungere l'indicatore di caricamento al Aggiungi post pagina anche. È esattamente lo stesso, quindi non lo ripeterò più. Se rimani bloccato, dai un'occhiata al codice sorgente alla fine di questo tutorial.

Filtra articoli nella pagina di benvenuto

A questo punto, qualsiasi utente loggato può aggiungere, modificare ed eliminare tutti i post nell'applicazione. Ma non è giusto permettere a un utente di modificare il post di un altro utente. Quindi filtreremo i post visualizzati nella pagina di benvenuto e mostreremo solo i post creati da un particolare utente.

Per interrogare un dato da Firebase possiamo usare l'API startAt e endAt. utilizzando iniziare a e ENDAT possiamo recuperare i risultati con il punto iniziale e il punto finale specificati. Ma i dati con cui vorremmo passare iniziare a dovrebbe essere una priorità. Pertanto, per prima cosa dovremo impostare l'indirizzo email come priorità mentre trasferiamo i dati su Firebase.

Quindi, apri addPost / addPost.js e dare un'occhiata alla parte in cui trasferiamo i dati a Firebase.

fb. $ push (title: title, post: post, emailId: CommonProp.getUser ()). then (function (ref) console.log (ref); $ location.path ('/ welcome'); , function (error) console.log ("Errore:", errore););

Modificare il codice sopra per impostare l'indirizzo e-mail come priorità mentre si spingono i dati.

var user = CommonProp.getUser (); fb. $ push (title: title, post: post, emailId: user, '.priority': user). then (function (ref) console.log (ref); $ location.path ('/ welcome' );, funzione (errore) console.log ("Errore:", errore););

Quindi ora se aggiungiamo un post nella nostra applicazione viene aggiunto con una priorità per l'indirizzo email. Quindi, apri Welcome / welcome.js e dare un'occhiata alla porzione in cui stiamo creando il $ Firebase oggetto in WelcomeCtrl.

var sync = $ firebase (firebaseObj);

Modificare il codice sopra aggiungendo il iniziare a e ENDAT metodi per firebaseObj.

var sync = $ firebase (firebaseObj.startAt ($ scope.username) .endAt ($ scope.username));

Ora, restituirà solo i post aggiunti da un particolare utente connesso.

Salvare le modifiche precedenti e riavviare il server. Rimuovi tutti i vecchi post da Firebase. Ora prova ad aggiungere post dopo aver effettuato l'accesso con un indirizzo email e una password validi. Dopo aver creato alcuni post, prova ad accedere come un altro utente e non sarai in grado di visualizzare i post creati dall'utente precedente.

Conclusione

In questo tutorial, abbiamo visto come aggiungere l'indicatore di caricamento Ladda nella nostra applicazione per rendere la nostra app più interattiva. Abbiamo anche visto come filtrare il risultato dei dati durante il recupero dei dati da Firebase. Nella parte successiva di questa serie, implementeremo la funzionalità di disconnessione e correggeremo anche un paio di problemi esistenti.

Il codice sorgente di questo tutorial è disponibile su GitHub. Fateci sapere i vostri pensieri, correzioni e suggerimenti nei commenti qui sotto!