Een webapp maken met behulp van Scratch met AngularJS en Firebase deel 7

In het vorige deel van deze tutorialserie hebben we het Bewerk en verwijderen post functionaliteit op de welkomstpagina. In dit deel van de tutorial voegen we een Ladda-laadindicator toe aan onze applicatie. Het toevoegen van een laadindicator is vrij essentieel omdat het de toepassing interactiever maakt. We zullen ook een paar kleine problemen oplossen naarmate de handleiding vordert.

Ermee beginnen

Laten we beginnen met het klonen van het vorige deel van de tutorial vanuit GitHub.

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

Nadat u de broncode hebt gekloond, navigeert u naar de projectdirectory en installeert u de vereiste afhankelijkheden.

cd AngularJS_Firebase_Part6 npm installeren

Zodra de afhankelijkheden zijn geïnstalleerd, start u de server.

npm start

Wijs je browser naar http: // localhost: 8000 / app / # / home en je zou de applicatie moeten laten draaien.

Een Ladda-laadindicator toevoegen

Ladda is een UI-concept dat een laadindicator combineert met knoppen, waardoor deze interactief en gebruiksvriendelijk is. Van de officiële Ladda-site,

Een UI-concept dat laadindicatoren samenvoegt in de actie die hen heeft aangeroepen. Hoofdzakelijk bedoeld voor gebruik met formulieren waarbij gebruikers onmiddellijk feedback krijgen bij het indienen in plaats van ze zich af te vragen terwijl de browser zijn ding doet.

Een richtlijn voor Ladda opstellen

Om Ladda in onze applicatie te gebruiken, maken we een AngularJS-richtlijn voor de LadDA-laadindicator. Richtlijnen zijn een van de kernfuncties van AngularJS en ze bepalen de weergave van HTML in de toepassing.

Doe open app / home / home.js en maak een eenvoudige richtlijn zoals hieronder getoond: 

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

We starten en stoppen de ladda-laadindicator op basis van a $ scope variabele genoemd login.loading. Wanneer login.loading is waar, we geven de laadindicator weer en wanneer deze false is, stoppen we de laadindicator. Dus, in HomeCtrl, definieer een variabele genaamd Log in en wijs het toe aan de $ scope.login veranderlijk.

var login = ; $ scope.login = login;

Voeg vervolgens de CSS- en JavaScript-bestanden van ladda dist in toe home / home.html zoals hieronder getoond:

  

Na het toevoegen van het bovenstaande script en stijlreferenties, wijzigt u de Aanmelden knoop binnen home.html zoals getoond:

Zoals u in de bovenstaande code kunt zien, hebben we de richtlijn toegevoegd laddaLoading naar de knop en zijn gepasseerd login.loading. We zullen het doorgeven instellen en resetten login.loading om het display van de laadindicator in te schakelen. We hebben ook bepaalde stijlen toegevoegd, Segoe-ui-light en Ladda-knop, om de Ladda-laadindicatoren in te richten.

Nu in de richtlijn link functie, voeg de volgende code toe om de login.loading bereikvariabele en start en stop de indicator dienovereenkomstig.

.directive ('laddaLoading', [function () return link: function (scope, element, attrs) var Ladda = window.Ladda; var ladda = Ladda.create (element [0]); // Kijken login.loading voor wijziging bereik. $ watch (attrs.laddaLoading, function (newVal, oldVal) // Op basis van de waarde start en stop de indicator als (newVal) ladda.start (); else ladda.stop (); );;]);

Vervolgens klikt de gebruiker op Aanmelden knop moeten we de laadindicator instellen. Dus, in HomeCtrl binnen in de Aanmelden functie, instellen login.loading naar true om de laadindicator te starten.

login.loading = true;

Evenzo bij het inloggen succes of mislukking callback wordt gebeld, we moeten de login.loading naar false om de laadindicator te stoppen.

login.loading = false;

Sla alle wijzigingen op en start de server opnieuw op. Voer een geldig e-mailadres en wachtwoord in en u zou de laadindicator in actie kunnen zien.

Evenzo kunnen we de ladda laadindicator voor de knop Registreren in register / register.html. Vermeld de vereiste referenties in register / register.html zoals getoond: 

  

Wijzig de Registreren knop om de richtlijn op te nemen zoals getoond:

Binnen in de RegisterCtrl voeg het toe Log in variabele om de ladda-laadindicator in te stellen en opnieuw in te stellen.

 var login = ; $ Scope.login = login;

Nu, om de laadindicator in te schakelen wanneer de gebruiker op klikt Registreren knop, voeg de volgende code toe aan de inschrijven functie.

login.loading = true;

Om de laadindicator uit te schakelen, aan succes of mislukking callback voeg de volgende code toe.

login.loading = false;

Sla alle wijzigingen op en probeer u te registreren voor een nieuw account. Door op de te klikken Registreren knop moet je de laadindicator kunnen zien.

Evenzo kunnen we de laadindicator toevoegen aan de Voeg bericht toe pagina ook. Het is precies hetzelfde dus ik zal het niet nog een keer herhalen. Als je vastloopt, bekijk dan de broncode aan het einde van deze tutorial.

Filter de artikelen op de welkomstpagina

Op dit punt kan elke ingelogde gebruiker alle berichten in de toepassing toevoegen, bewerken en verwijderen. Maar het is niet echt eerlijk om een ​​gebruiker toe te staan ​​de post van een andere gebruiker te wijzigen. We filteren dus de berichten die worden weergegeven op de welkomstpagina en tonen alleen de berichten die door de betreffende gebruiker zijn gemaakt.

Voor het opvragen van gegevens uit Firebase kunnen we de API startAt en endAt gebruiken. Gebruik makend van begin bij en eindig op we kunnen resultaten ophalen met het gespecificeerde begin- en eindpunt. Maar de gegevens waarmee we zouden passeren begin bij zou een prioriteit moeten zijn. Dus eerst moeten we het e-mailadres instellen als een prioriteit terwijl we de gegevens naar Firebase verzenden.

Dus open addPost / addPost.js en bekijk een gedeelte waar we de gegevens naar Firebase pushen.

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

Wijzig de bovenstaande code om het e-mailadres als prioriteit in te stellen terwijl u de gegevens pusht.

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

Dus als we nu een bericht toevoegen in onze applicatie, wordt het toegevoegd met een prioriteit voor het e-mailadres. Open vervolgens welkom / welcome.js en bekijk het gedeelte waar we het creëren $ firebase object in WelcomeCtrl.

var sync = $ firebase (firebaseObj);

Wijzig de bovenstaande code door de begin bij en eindig op methoden om de firebaseObj.

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

Nu worden alleen de berichten weergegeven die door een bepaalde ingelogde gebruiker zijn toegevoegd.

Sla de bovenstaande wijzigingen op en start de server opnieuw. Verwijder alle oude berichten van Firebase. Probeer nu berichten toe te voegen na het inloggen met een geldig e-mailadres en wachtwoord. Zodra een paar berichten zijn gemaakt, probeert u in te loggen als een andere gebruiker en kunt u de berichten die door de vorige gebruiker zijn gemaakt niet zien.

Conclusie

In deze zelfstudie hebben we gezien hoe we de Ladda-laadindicator kunnen toevoegen aan onze applicatie om onze app interactiever te maken. We hebben ook gezien hoe het gegevensresultaat moet worden gefilterd tijdens het ophalen van gegevens uit Firebase. In het volgende deel van deze serie zullen we de uitlogfunctie implementeren en een aantal bestaande problemen oplossen.

Broncode van deze tutorial is beschikbaar op GitHub. Laat ons uw mening, correcties en suggesties weten in de opmerkingen hieronder!