Mai întâi de toate, bine ați venit la finalul acestei serii de tutorial!
Ultima sesiune, i-am arătat cum să adăugați o nouă funcție blogului: adăugarea de comentarii. Este destul de mult o caracteristică autonomă. În această sesiune, vă voi arăta cum să adăugați categorii în sistemul dvs. de blog. Este o sarcină mai dificilă, deoarece codul său va fi mai strâns legat de codul existent.
Știți exercițiul: modelul vine mereu primul. Încă o clasă nouă pe Parse.com: Categorie
clasă. Ar trebui să fie foarte simplu. Avem nevoie doar de un câmp personalizat:
Nume
Să creați doar două categorii inactive pentru a face mai ușoară testarea:
Acum, adăugați o nouă coloană în tabela de clasă Blog de pe Parse.com și faceți-i un pointer Categorie
.
Să le legăm, de asemenea, de mai multe postări pe blog.
Apoi, cometariu
obiect în blog.js
. Din nou, poate fi foarte simplu.
Categorie = Parse.Object.extend ('Categorie', );
Și colecția:
Categorii = Parse.Collection.extend (model: Categorie)
Ca în comentariile, să primim comentarii când le oferim WriteBlogView
.
render: function () ... var self = aceasta, categorii = noi Categorii (); categoria.fetch (), atunci (funcția (categorii) attributes.categories = categories.toJSON () ;. $ el.html (this.template (atribute)). ););
Apoi, trebuie să găsim categoria curentă atunci când există o categorie existentă pentru postarea pe blog pe care o editați. Putem purta doar prin attribute.categories
matrice și set selectat
la ADEVĂRAT
pentru categoria corectă.
categories.fetch (), atunci (funcția (categorii) attributes.categories = categories.toJSON (); // Descărcați categoria curentă dacă (attributes.category) attributes.categories.forEach (funcția (categoria, i) (categoria == attributes.category) attributes.categories [i] .selected = true;); console.log (atributele) ;. $ el.html (self.template (atribute) .write-content '); wysihtml5 (););
Și în HTML, render categorii într-un meniul:
Acum, să o înregistrăm în a depune()
funcția în WriteBlogView
:
trimiteți: funcția (e) ... this.model.update (title: data [0] .value, category: data [1] .value, summary: data [2] .value, content: data [3] );
Și apoi în Blog.update ()
funcţie:
Blog = Parse.Object.extend ('Blog', update: function (data) ... var categoria = noua Categorie (); category.id = data.category; this.set ( "categorie": categorie, ...) salvați (null, ...);)
Observați că nu puteți pune doar id-ul categoriei, dar trebuie să creați un nou categorie
exemplu, și setați id-ul său la ID-ul de categorie pe care îl obțineți din formular.
Dați-i un test și, sperăm, îl puteți vedea corect înregistrat în baza de date:
Acum, hai să mergem mai departe pentru a crea o bară laterală care face legătura cu diferite categorii.
Mai întâi, scoateți tot codul HTML static pentru bara laterală:
Și apoi faceți un nou șablon div pentru șablonul din meniul de categorii:
Apoi, faceți o Vizualizare pentru această listă de categorii:
CategoriiView = Parse.View.extend (template: Handlebars.compile ($ ('# categories -tpl'). Html ()), render: function () var collection = category: this.collection.toJSON ; $ el.html (acest.template (colecție));)
Deoarece lista de categorii se află pe fiecare pagină, putem crea o variabilă comună în BlogRouter.initialize ()
:
inițializa: funcția (opțiuni) this.blogs = noi Bloguri (); this.categories = Categorii noi ();
Și apoi redați-o în .start()
funcţie:
start (): function () ... this.categories.fetch (), apoi (functie (categorii) var categoriesView = new CategoriesView (colectie: categories); .html (categoriesView.el););
Faceți o încercare, iar acum se face:
Pentru că acum avem o variabilă comună, o putem utiliza și ea WriteBlogView.render ()
:
Acum trebuie doar să facem / Categorie / objectId
muncă.
Să adăugăm mai întâi acest model de router:
rute: ... 'categoria /: id': 'categoria'
Apoi scrieți categorie
funcţie. Este destul de simplă, doar o combinație între lucrurile pe care le-ați învățat până acum:
categorie: funcție (id) // Obținerea obiectului din categoria curentă var query = new Parse.Query (Category); query.get (id, success: function (categorie) // Interogare pentru a obtine blogurile sub acea categorie var blogQuery = nou Parse.Query (Blog) .equalTo ("categorie" (blogs) // Render blogs var blogsView = blogsView noi collection: blogs); blogsView.render (); $ container.html (blogsView.el);); eroare: funcție (categorie, eroare) console.log (eroare););
Acum totul funcționează.
Wow, nu-mi vine să cred că mi-a luat atât de mult pentru a termina întreaga serie. În ultimele zece sesiuni, ați învățat multe despre Parse.js și dezvoltarea web în general. Împreună am construit un sistem blog cu funcții complete: adăugați, editați, ștergeți, conectați, comentați și, în această sesiune, categoriile.
Sper că veți găsi această serie utilă. Vă rugăm să împărtășiți cu dvs. feedback-ul, sugestiile și conținutul pe care doriți să-l acoperiți în viitor. Și dacă ați realizat proiecte web utilizând tehnici din acest tutorial, mi-ar plăcea să le văd și eu.