Først av alt, velkommen til finalen av denne opplæringsserien!
Siste økt viste jeg deg hvordan du legger til en ny funksjon i bloggen: legger til kommentarer. Det er ganske mye en frittstående funksjon. Denne sesjonen, jeg vil vise deg hvordan du legger til kategorier i bloggsystemet ditt. Det er en vanskeligere oppgave, da koden blir tettere sammenflettet med den eksisterende koden.
Du kjenner boret: modellen kommer alltid først. En ny ny klasse på Parse.com: the Kategori
klasse. Det burde være veldig enkelt. Vi trenger bare ett tilpasset felt:
Navn
La oss bare lage to dummy kategorier for å gjøre det lettere for testing:
Nå legger du til en ny kolonne i Blog-klassetabellen på Parse.com og gjør det til en peker til Kategori
.
La oss også koble dem til flere blogginnlegg.
Deretter Kommentar
objekt i blog.js
. Igjen kan det være veldig enkelt.
Kategori = Parse.Object.extend ('Kategori', );
Og samlingen:
Kategorier = Parse.Collection.extend (modell: Kategori)
Som i kommentarer, la vi hente kommentarer når vi gjengir WriteBlogView
.
gjengi: funksjon () ... var selv = dette, kategorier = nye kategorier (); categories.fetch (). deretter (funksjon (kategorier) attributes.categories = categories.toJSON (); self. $ el.html (this.template (attributes)). finn ('. skriveinnhold'). wysihtml5 ););
Deretter må vi finne den nåværende kategorien når det er en eksisterende kategori for blogginnlegget du redigerer. Vi kan bare gå gjennom attribute.categories
array og sett valgt
til EKTE
for riktig kategori.
categories.fetch (). then (funksjon (kategorier) attributes.categories = categories.toJSON (); // Få nåværende valgt kategori hvis (attributes.category) attributes.categories.forEach (funksjon (kategori, i) hvis (kategori == attributes.category) attributes.categories [i] .selected = true;); console.log (attributter); self. $ el.html (self.template (attributes)). .write-innhold '). wysihtml5 (););
Og i HTML, gjengi kategorier i en Meny:
La oss nå registrere det i sende inn()
fungere i WriteBlogView
:
send inn: funksjon (e) ... this.model.update (title: data [0] .value, category: data [1] .value, summary: data [2] .value, content: data [3] .value );
Og så i Blog.update ()
funksjon:
Blog = Parse.Object.extend ('Blog', update: function (data) ... var kategori = ny kategori (); category.id = data.category; this.set ('title': data.title, 'kategori': kategori, ...). lagre (null, ...);)
Legg merke til at du ikke bare kan legge ned kategoridokumentet, men du må opprette en ny kategori
eksempel, og angi id til kategori id du får fra skjemaet.
Gi det en test, og forhåpentligvis kan du se det riktig registrert i databasen:
La oss nå gå videre for å lage et sidebar som lenker til forskjellige kategorier.
Først tar du ut all den statiske HTML-koden for sidefeltet:
Og så lag en ny mal div for malen på kategori menyen:
Deretter gjør du en visning for denne listen over kategorier:
CategoriesView = Parse.View.extend (mal: Handlebars.compile ($ ('# categories-tpl'). Html ()), gjengi: funksjon () var collection = kategori: this.collection.toJSON () ; dette. $ el.html (this.template (samling));)
Fordi listen over kategorier er på hver side, kan vi opprette en delt variabel i BlogRouter.initialize ()
:
initialiser: funksjon (alternativer) this.blogs = nye blogger (); this.categories = nye kategorier ();
Og så gjeng det i .start()
funksjon:
start: funksjon () ... this.categories.fetch (). da (funksjon (kategorier) var categoriesView = new CategoriesView (samling: kategorier); kategorierView.render (); $ ('blog-sidebar') .html (categoriesView.el););
Gi det en prøve, og nå gjør det:
Fordi vi nå har en delt variabel, kan vi også bruke den i WriteBlogView.render ()
:
Nå må vi bare gjøre / Kategori / objectId
arbeid.
La oss legge til dette rutermønsteret først:
ruter: ... 'kategori /: id': 'kategori'
Deretter skriver du kategori
funksjon. Det er ganske greit, bare en kombinasjon av tingene du har lært så langt:
kategori: funksjon (id) // Hent nåværende kategoriobjekt var spørring = ny Parse.Query (Kategori); query.get (id, suksess: funksjon (kategori) // Query for å få bloggene under den kategorien var blogQuery = new Parse.Query (Blog) .equalTo ("kategori", kategori) .descending ('createdAt') ; collection = blogQuery.collection (); // Hent blogger collection.fetch (). deretter (funksjon (blogger) // Render blogger var blogsView = new BlogsView (samling: blogger); blogsView.render (); $ container.html (blogsView.el););, feil: funksjon (kategori, feil) console.log (feil););
Nå jobber alt.
Wow, jeg kan ikke tro det tok meg så lang tid å fullføre hele serien. I løpet av de siste ti øktene har du lært mye om Parse.js og webutvikling generelt. Sammen har vi bygget et bloggsystem med fulle funksjoner: legg til, rediger, slett, logg inn, kommentarer, og i denne økten, kategorier.
Jeg håper du finner denne serien nyttig. Vennligst del med meg din tilbakemelding, forslag og innhold du vil at jeg skal dekke i fremtiden. Og hvis du gjorde noen webprosjekter ved hjelp av teknikker fra denne opplæringen, vil jeg gjerne se dem også.