i ember: del 4

går i ember: del 4,,,,, andel,,,,,,,, 8,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i mine tidligere lektion, jeg var inde på, hvordan man bruger, ember.object, til at definere deres modeller og arbejde med datasæt.i dette afsnit vil vi se nærmere på, hvordan ember bruger styret blive rammer at definere din app 's brugergrænseflade.,,,, klient side skabeloner, mest server-side udviklere er vant til at anvende modeller til at definere avance, som vil være dynamisk, fyldt med fly.hvis du nogensinde har brugt asp.net, coldfusion, folkesundhedsprogrammet og skinner, så er det ret sikker på at du ved, hvad jeg taler om., javascript klient side blive virkelig har taget for sent, især på grund af den fokusere på opbygning af mere stationær som erfaringer.det betyder, at flere af behandlingen er foretaget på client-side med data, der hovedsagelig har via server-side api - anmodninger. jeg husker, at jeg skrev om client-side skabeloner for nogen tid siden, da de jquery skabelon, stik af første gang blev frigivet.næsten tre år senere, er det stadig den mest læste post på min blog, viser, hvor interesseret i client-side blive er steget.siden da, har en række andre rammer er blevet løsladt, tilbyder rige karakteristika og støttende samfund.styret er et populært valg og den ramme af ember projekt til magten, det er blive behov.det giver mening, som handlerbars blev skabt af ember.js medstifter og grundlæggende medlem af holdet, yehuda katz.bemærk dog, at jeg har ikke planer om at udføre sammenligninger mellem blive rammer, og jeg vil udelukkende fokusere på handelbars, da det er, hvad ember.js anvendelser som standard i de foregående artikler, jeg viste nogle meget grundlæggende modeller i kode:, < manuskript type = "tekst /x-handlebars" > < og h2 > < stærk > {{firstname}} {{lastname}} < /stærk > < /h2 > < /manuskript >, to ting, der står op, er den type erklæring om manuskriptet, og curly seler der optræder som delimiters til udtryk, at styret vil handle på.det er meget typisk syntaks, at jeg vil drøfte det mere indgående snarest, og du bruger konsekvent som du bygge ember skabeloner,.,, syntaks, trods det faktum, at styret bruger en særlig syntaks, ved udgangen af den dag, du er virkelig arbejde med standard html oveni.styr, tjener til at injicere indholdet i dette tillæg til at gøre oplysninger til brugeren.det gør det ved parsing det afgrænsede udtryk og erstatte dem med de oplysninger, du har bedt om styret til at arbejde med.i tilfælde af ember, styret danner kroge og ember bruger dem.data, der typisk kommer fra din controller (husk, at de fungerer som grænseflade til deres modeller).den første ting, model har brug for, er et manuskript - definition.de fleste af jer har defineret manuskript tags til at lade din javascript bibliotek.faktisk, du har allerede gjort dette til last styret i ember projekt:, < manuskript src = "js /libs /jquery-1.9.1. er" > < /manuskript > < manuskript src = "js /libs /handlebars-1.0.0-rc. 3. er" > og lt; /manuskript > < manuskript src = "js /libs /ember-1.0.0-rc. 1. er" > < /manuskript > < manuskript src = "js /app. er" > < /manuskript > der er en lille forskel med at bruge det til at fastlægge en model.først skal vi fastlægge en type, tilskriver "tekst /x-handlebars".denne type er ignoreret af browser, men teksten tilgængelig for inspektion og gør det muligt at identificere modeller inden for app ember.desuden anvender data attribut, kaldet "ember data skabelon navn" ember kan bruge til at inddrage specifikke dele af din ansøgning til en skabelon.for eksempel følgende erklæring fastlægger en model med navnet "arbejdstager":, < manuskript type = "tekst /x-handlebars" data skabelon navn = "arbejdstager" >...< /manuskript >, når deres anvendelse begynder, ember scanninger dom for type = "tekst /x-handlebars, indsamler de modeller, det finder og lagrer dem i en ejendom i ember objekt, der kaldes, ember.templates, som den bruger til at finde ud af, hvad der gøres for en given rute.det er derfor, efter ember navn konventioner er så vigtigt.i ovenstående eksempel, denne model vil automatisk blive forbundet til de ansattes rute og registeransvarlige, du skabte i din ansøgning.igen, jeg kan ikke understrege nok, hvor disse navne konventioner vil gøre din udvikling lettere., ember er afhængige af ip - adresser for at fastlægge de midler, der skal anvendes, og de modeller, der skal gøres.lad os forestille os, at du havde en profil, side med url "/profil".du ville have en indtægt, der kaldes, profil, det ville belastning særlige ressourcer til, at url (som en rute formål), og du vil også have en skabelon af samme navn.vi har gennemgået definitionen af ressourcer og rute objekter i del 2 af mine ember serie, så hvis du ikke er sikker på, hvad jeg taler om, være sikker på at hoppe tilbage for at genopfriske dig på dette. når du besøger url, ember ved det skal fylde de ressourcer og analysere den model, man har defineret.det gør dette via sit navn konventioner, vel vidende, at fordi du gik til "/profil" det skal laste de ressourcer, der er fastlagt i, profil, og gøre den skabelon, der hedder data skabelon navn = "profil".,, vej -, profileroute, registeransvarlige, profilecontroller, model:, profil (bemærk, at det er små), hen over navngivning konventioner igen, vil de se, at den rute, tilsynsførende og model er forbundet med samme url navn, med den undtagelse, at modellen er stavet med små.det er, hvad der gør det muligt at klare alt ember bag kulisserne, uden at du blev nødt til at gøre en masse ledninger. også vigtigt at bemærke, er, at hvis du erklærer en model uden data skabelon navn, attribut, ember vil antage, at det er anvendelsen set model - en typisk anvendes som en lokalitet - model for at skabe brugergrænseflade elementer, som f.eks. personer, footers og navigation.og hvis du ikke udtrykkeligt definerer en model for en ansøgning eller en indtægt (f.eks.: en url), ember gør det automatisk til at sikre stabilitet og konsekvens i din app.,, udtryk, det næste skridt er at inddrage deres avance og afgrænset udtryk, du vil bruge til at repræsentere deres data.udtryk er afgrænset, via dobbelt curly seler, der tillader, at de let kan identificeres, og har analyseret data overføres fra din tilsynsførende.her er et eksempel:, < manuskript type = "tekst /x-handlebars" > < h2 > < stærk > {{firstname}} {{lastname}} < /stærk > < /h2 > < ///////manuskript > i dette tilfælde, {{firstname) og {{lastname}} udtryk vil være parset af ember og erstattes af de faktiske data.desuden opstiller observatører, så at huske dine data ændringer, deres model automatisk er ajourført og opdateringer til udtryk for brugeren af din app. indtil videre har jeg vist dig et simpelt eksempel, men det vigtigste er:,, ember bruger en særlig type attribut til at fastlægge modeller.brug standard avance, skabeloner og afgrænset udtryk, der har analyseret på client-side.disse modeller har fuld træk, der er kapacitet af styret., ember opstiller observatører til dynamisk opdatere din brugergrænseflade data, som den ændrer sig.,, giver det en masse fleksibilitet i, hvordan du struktur din brugergrænseflade.lad os fortsætte med at se på de karakteristika, der er til rådighed,.,, avancerede udtryk, kan du huske det ember udnytter styret, så du har adgang til den fulde bredde til udtryk her.betingede udtryk er en skal, med henblik på at gøre næsten hvad som helst, nyttige og styret giver en række muligheder.,Let's say that I had a JSON dataset that looked like this:, "items": [{ "title": "Tearable Cloth Simulation in JavaScript", "url": "http://codepen.io/stuffit/pen/KrAwx", "id": 5592679, "commentCount": 20, "points": 127, "postedAgo": "1 hour ago", "postedBy": "NathanKP" }, { "title": "Netflix now bigger than HBO", "url": "http://qz.com/77067/netflix-now-bigger-than-hbo/", "id": 5592403, "commentCount": 68, "points": 96, "postedAgo": "2 hours ago", "postedBy": "edouard1234567" },If I wanted to ensure that the ,title, data is available, I could add a conditional "if" statement by using the ,#if, expression:, {{#if item.title}} <li>{{item.title}} - {{item.postedago}} af {(punkt på dagsordenen. postedby}} < /li > {{/i) denne kontrol for at se, om, item.title, ikke er defineret, og fortsat behandling med efterfølgende udtryk for, titel, postedago, og postedby data udtryk.da dette datasæt indeholder mere end ét "journal", - - er det sikkert at antage, at vi ville nok ønsker at sløjfe over hvert element af post.det er der, {{# hver), udtryk, kommer ind i billedet.det giver dig mulighed for at opregne en liste over genstande.så igen, i betragtning af at modeller er en kombination af avancen og styret udtryk, vi kan bruge,&#hver, udtryk for loop gennem hvert punkt, der er til rådighed inden for vores ember model objekt.husk, at ember model er afledt af den registeransvarlige, der er forbundet med den skabelon, via ember navn konventioner., <ul> {{#each item in model}} {{#if item.title}} <li>{{item.title}} - {{item.postedAgo}} by {{item.postedBy}}</li> {{/if}} {{/each}} </ul>,This would render out something similar to:, <ul> <li>Tearable Cloth Simulation in JavaScript - 1 hour ago by NathanKP</li> <li>Netflix now bigger than HBO - 2 hours ago by edouard1234567</li> <li>Fast Database Emerges from MIT Class, GPUs and Student&#39;s Invention - 33 minutes ago by signa11</li> <li> Connecting an iPad retina LCD to a PC - 6 hours ago by noonespecial</li> </ul>,The distinct advantage is Ember's implicit specification of observer,s which will update your data på en opdatering. hvis deres betingede udtryk skal være mere komplekse, vil du ønsker at skabe en beregnet ejendom.det giver dig mulighed for at oprette en ejendom på grundlag af en metode, der kan anvendes kompleks kode betingelser til dine data.lad os sige, jeg ville blot ønskede at vise data, som havde titlen "tearable stof simulering i javascript".der er et par ting, jeg er nødt til at fælde:,, jeg har brug for en beregnet ejendom til at scanne hver konto og fortæl mig, om den titel, tændstikker, jeg har brug for at skabe en registeransvarlig, som kan anvendes ved hver enkelt punkt på dagsordenen, der er opregnet i modellen, er jeg nødt til at ajourføre modellen, således at den bruger den registeransvarlige for hver punkt, den første ting jeg er nødt til at gøre, er at skabe den nye registeransvarlige, der vil få hvert punkt på dagsordenen, der er forbundet med og skabe den beregnede ejendom i det:,, app.titlecontroller = ember. objectcontroller. udvide ((titlematch: function() {tilbage. kom (&' afsnit &') = = = & quot; tearable stof simulering i javascript & quot;}. property()}), ser på den kode, vi er subclassing, ember.objectcontroller, for at skabe den fællesntroller.det er den registeransvarlige, der vil få hvert punkt på dagsordenen, der er lagt i vores model.det næste, vi skaber en metode, der kaldes, titlematch, som anvender, get(), en metode til at trække det nuværende afsnit, sammenligne den med den tekst, som jeg har defineret, og returnerer en boolean.endelig er den glød, property(), metode er kaldet til at definere, titlematch, metode som en beregnet ejendom.når vi er på plads, vi ajourfører modellen er {{# hver), udtryk for, at repræsentere hver post med den nye registeransvarlige, vi skabte.dette er gjort ved at bruge den, itemcontroller direktiv.en vigtig ting at forstå, er, at itemcontroller, er en vigtig sætning i ember betød, at inddrage en styreenhed til poster i en skabelon.du må ikke forveksle det for et virkeligt registeransvarliges navn (som jeg gjorde i første omgang).den registeransvarlige navn er tildelt, itemcontroller, som denne:, < ul > {{# hvert punkt i model itemcontroller = "titel"}} {{#, hvis titlematch}} < li > {{foo - foo afsnit}} {{. postedago}} ved {{foo postedby}} < /li > {{/hvis}} {{/hver}} < /ul > igen, at konventioner dikterer, at ved tildeling af navne på modeller, vi bruger små.i dette tilfælde, vi sætter, titlecontroller, til itemcontroller,.nu, som hvert punkt på dagsordenen er forbundet med den beregnede ejendom, titlematch, anvendes til at evaluere den titel og vise data, hvis det passer.,, bindende oplysninger til elementer, at skabe dynamiske modeller handler ikke bare om at spytte ud.der er tidspunkter, hvor det ser ud og føles af eu - erhvervsgrenen har behov for at blive påvirket af data, der behandles.at vise et billede eller bygning af en forbindelse er gode eksempler herpå.bindende oplysninger til en del kræver anvendelse af særlige ember hjælpere, at bistå med at definere en attribut er sammenhæng samt at sikre, at de attributter, ajourføres korrekt, når data ændringer.for elementer, attributter, {{bindattr}}, hjælper anvendes til at udfylde de værdier for en attribut.hvis vi skulle dynamisk angive url - af et billede, vi vil anvende følgende syntaks:, < img {{bindattr src = "logourl"}} alat = "logo" > det samme kan gøres for egenskaber, der ikke modtager en værdi, som f.eks. handicappede,:, < input type = "afkrydsningsfelt" {{bindattr handicappede = "isadministrator"}} > i dette tilfælde isadminstrator, kunne være en beregnet ejendom, en metode, som den registeransvarlige eller bare en normal objekt ejendomsret giver dig en masse fleksibilitet ved fastlæggelsen af betingelserne for at sætte afkrydsningsfelt.denne fleksibilitet har til at definere klasse navne samt.hvis jeg ønskede at bruge en betinget angivelse, at definere, hvis et klasse bør anvendes til min element, jeg kunne bruge følgende kode:, < div {{bindattr klasse = "isurgent"}} > advarsel!< /div > afhængigt af boolean, min forhøjelse vil enten være:, < div {{bindattr klasse = "haster"}} > advarsel!< /div >, for et sandt, tilstand eller:, < div > advarsel!< /div > for en falsk forudsætning.bemærk, at når jeg er angivet, isurgent, for den klasse, ember dasherized navn og gjort den klasse, som haster.hvis du foretrækker at præcisere deres egen klasse baseret på de resultater, man kan bruge et betinget udtryk svarende til en tredelt erklæring:, < div {{bindattr klasse = "isurgent: presserende: normal"}} > dette vil vende tilbage, hurtigt eller normale, for den klasse, der er baseret om betinget værdien af isurgent,.,, komme til at kende skabeloner, modeller vil være grundlaget for deres brugergrænseflade, så det vil være vigtigt, at du bruger tid på at læse brevene på både den glød og styr på for at få en god fornemmelse for deres samlede magt.selv hvis du ikke bruger ember, styret er en god ramme for dig at bruge den, og værd at investere i at lære at bruge den. gabriel manricks skrev en god forelæsning om styr på nettuts +, som du kan bruge til at få styr på rammer.



Previous:
Next Page: