În ultima sesiune, ați refacturat întregul dvs. sistem de bloguri. Acum, că totul este curățat, sunteți pregătit să accelerați pentru unele noi aventuri. În această sesiune, vom face mai mult în jurul routerului și vom adăuga alte trei funcții în sistemul nostru de blog: ștergeți, deconectați și vizualizați un singur blog.
În partea 6, am acoperit funcția de editare. Sunt șanse, ați dori, de asemenea, să ștergeți una dintre postările de pe blog. Există două locuri pe care le puteți pune această funcție: adăugați-o în BlogsAdminView
, sau să o trimiteți la o adresă URL și să o rezolvați în Router
.
Vă voi arăta calea Routerului. Este mai frecvent folosită și face codul mai bine structurat.
Ca de obicei, să adăugăm mai întâi un model de adresă URL:
rute:: "", "admin", "login": "login" : 'del'
Apoi, actualizați link-ul din pagina admin:
Șterge
Acum, să adăugăm un nou del
funcția router-ului să o gestioneze. Este destul de simplu: găsiți postarea pe blog folosind id
am trecut de la adresa URL și l-am distrus.
Încercați să vă provocați și să o scrieți fără să citiți codul meu. Ar trebui să înțelegi foarte bine Parse.js în acest moment.
del: funcția (id) var query = Parse.Query nou (Blog); query.get (id) .then (funcția (blog) blog.destroy (), apoi (funcția (blog) alert ('Șterse!');
Observați că puteți utiliza funcția .atunci()
funcționați aici în loc să treceți un obiect așa cum am făcut-o anterior:
query.get (id, succes: function (blog) ..., eroare: functie (blog, eroare) ...);
Este o modalitate ușoară de a adăuga funcții de apel în Parse.js, făcând codul dvs. mai curat și mai ușor de citit. Du-te la Parse.com pentru a vedea documentația completă cu privire la promisiuni.
Să facem o încercare și să verificăm din nou baza de date pentru a vedea dacă funcționează.
Felicitări, funcționează!
Dacă acordați atenție URL-ului, veți vedea că după ce faceți clic pe fereastra de alertă, URL-ul este încă în continuare / Del /
iar postul pe care tocmai l-ați șters este încă acolo. Vrem să trimitem utilizatorilor înapoi la pagina de administrare după ștergere, iar pagina ar trebui să se actualizeze și să reflecte schimbarea pe care au făcut-o.
Puteți realiza toate acestea făcând o redirecționare:
del: funcție (id) var self = aceasta, interogare = Parse.Query nou (Blog); query.get (id) .then (funcția (blog) blog.destroy (). atunci (funcția (blog) self.navigate ('admin', trigger: true);
Observați că, de data aceasta, sunați navigare
din interiorul routerului, puteți stoca router-ul ca de sine
, și sunați self.navigate ()
.
În cele din urmă, trebuie să vă asigurați că sunteți singurul care poate șterge postările de pe blog. Să verificăm datele de conectare pentru funcție. Aceasta ar trebui să fie aceeași ca și Editați | ×
funcţie.
del: funcția (id) if (! Parse.User.current ()) this.navigate ('# / login', declanșator: true); altceva ...
Ca și ștergerea, logout-ul poate fi de asemenea gestionat de către router. De asemenea, începe cu adăugarea modelului de adresă URL:
rute: ... 'logout': 'logout',
Funcția de logout în sine este foarte ușor în Parse.js. Doar sună Parse.User.logOut ()
și apoi redirecționați către /Logare
pagină:
logout: funcție () Parse.User.logOut (); this.navigate ('# / login', trigger: true);
Și, în sfârșit, să adăugăm un buton # Admin-TPL
:
Deconectare
După cum puteți vedea, stilul nu este cu adevărat în centrul acestui tutorial. Simțiți-vă liber să fixați umplutura și stilul, totuși doriți.
Acum să mergem mai departe pentru a face noi funcționalități.
Până în acest moment, afișăm întregul articol de blog pe pagina de pornire. În timp ce unii oameni preferă acest stil, majoritatea sistemelor de blogare susțin ideea de a avea un rezumat al fragmentelor în avans și dacă vizitatorii dau clic pe articole, ei pot vedea conținutul pe o pagină separată, eventual comentând o zonă în jurul acestuia.
Vă voi ajuta să creați această vizualizare detaliată a blogului unic în această sesiune, iar noi ne vom concentra pe construirea comentariilor în următoarea.
Mai întâi, să adăugăm o coloană pentru rezumat în tabelul Blog:
Acum, să o adăugăm la Blog.update ()
funcţie. Puteți modifica funcția pentru a prelua un obiect de date care conține titlul, rezumatul și conținutul, pentru a evita memorarea ordinii variabilelor.
actualizare: functie (date) // setati ACL numai daca blogul nu are aceasta ... this.set ('title': data.title, 'summary': data.summary, 'content': data.content, ...) salvați (null, ...);
Adăugați încă unul pentru rezumat în
# Scrie-TPL
:
// Puneți acest grup de formule între grupul de formule pentru titlu și conținut
Și schimbați WriteBlogView.submit ()
funcție în consecință:
trimiteți: funcția (e) ... this.model.update (title: data [0] .value, summary: data [1] .value, content: data [2] .value);
Acum, deoarece am adăugat o nouă variabilă în șablon, trebuie să îi oferim o valoare implicită implicită în WriteBlogView.render ()
funcţie:
... ... ... ... ... ...
Și dacă utilizați pluginul wysihtml5 pentru conținut, veți observa anterior că țintim pe toate elemente:
. Acest $ el.html (this.template (atribute)) găsește ( 'textarea') wysihtml5 ()..;
Să dăm conținutul textarea unei clase și să țintim doar cu pluginul wysihtml5.
În # Scrie-TPL
:
În WriteBlogView.render ()
funcţie:
. Acest $ el.html (this.template (atribute)) găsi wysihtml5 (). ( 'Scrie-conținut'.).;
Acum funcționează!
Jucați cu noua pagină blog de scriere și adăugați câteva rezumate de bloguri și trageți rezumatul în loc de conținut # bloguri-TPL
:
#eac blog/fiecaretitlu
La time de authorName
rezumat
Ia-ți un minut și gândește-te cum ai adăuga a / Blog /: id
pentru a afișa conținutul pentru fiecare postare pe blog și încercați să o faceți singur. Ar trebui să reușești să faci asta acum singur!
Dar, în scopul acestui tutorial, permiteți-mi să vă dau o scurtă trecere în revistă:
Adăugați un nou șablon HTML pentru această pagină:
Adăugați un mesaj nou BlogView
clasa care ia în a blogul
obiect, și să-l facă # Pe blog-TPL
:
BlogView = Parse.View.extend (template: Handlebars.compile ($ ('blog-tpl'); html ()), render: function () var attributes = this.model.toJSON el.html (this.template (atributele));),
Adăugați un nou model de adresă URL în BlogRouter
:
rute: ... 'blog /: id': 'blog', ...
Și în BlogRouter.blog ()
funcția, a obține un blog de id, face o blogView
, și pune-l înăuntru $ container
:
blog: funcția (id) var query = Parse.Query nou (blog); query.get (id, succes: function (blog) console.log (blog); var blogView = nou BlogView (model: blog); , eroare: funcție (blog, eroare) console.log (eroare););
În cele din urmă, actualizați linkul în # bloguri-TPL
pentru a lega această pagină:
#eac blog/fiecaretitlu
La time de authorName
rezumat
Incearca:
Extra puncte dacă ați făcut acest lucru singur.
În această sesiune, ați construit o mulțime: o funcție de ștergere, o funcție de logout și un alt tip de pagină nouă. Dacă ați urmat această serie de tutori până acum, cred că aveți o înțelegere solidă a modului în care baza de date, modelul, vizualizarea, șablonul și ruterul funcționează împreună. Sper că începi să te bucuri de construirea unui proiect Parse.js în acest moment. Lăsați-mi feedback și spuneți-mi dacă este util.
Cu această pagină de post unic pe blog am construit de data aceasta, vom adăuga o secțiune de comentarii data viitoare. Ar trebui să fie unul distractiv. Rămâneți aproape!