bygge en kontakter manager med backbone.js: del 4

, opbygge kontakter manager med backbone.js: del 4,,,,, andel,,,,,,,, 11,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en ny serie: at få at vide, backbone.js.build en kontakter manager med backbone.js: del 3build en kontakter manager med backbone.js: del 5,,,,, i fjerde del af denne række, så vi, hvor nemt det er at tilføje og fjerne modeller fra vores samling. og hold den side ajourført i tekster med ændringer.i denne del, skal vi se på redigering af eksisterende model data.,,,, ved at komme i gang, vi starter med at tilføje et enkelt knap til den model, der vil gøre det muligt for redigering af data:, < knap klasse = "klippe" > edit < /knap > og, som vi er ved at tilføje den knap til vores nuværende model, kan vi tilføje en ny model, der kan anvendes til at gøre en redigerbar form, i hvilken model data kan ændres.It's very similar to the exiting template, and can be added to the page after the existing template:,<script id="contactEditTemplate" type="text/template"> <form action="#"> <input type="file" value="<%= photo %>" /> <input class="name" value="<%= name %>" /> <input id="type" type="hidden" value="<%= type %>" /> <input class="address" value="<%= address %>" /> <input class="tel" value="<%= tel %>" /> <input class="email" value="<%= email %>" /> <button class="save">Save</button> <button class="cancel">Cancel</button> </form> </script>,The new template consists mostly of ,<input >, elementer, der afslører redigerbar data.vi behøver ikke at bekymre dig om etiketter til elementer, men i stedet bruger data fra den model, som de standardværdier for hver input.bemærk, at vi bruger en skjult form område til opbevaring, type, en model, vi bruger den til at fastsætte værdien af en < udvælge >,, at vi er nødt til at tilføje, at bruge vores manuskript, i stedet for at modellen gør det. næste vi kan knytte nogle tilfælde står for den nye knapper, vi har tilføjet, ajourføre, arrangementer, objekt i den, contactview, klasse, således at den indeholder følgende nye bindinger: "klik". edit ":" editcontact "," vælg. type ":" addtype "," klik ". -": "saveedits", "klik knap. annuller": "canceledit", glem ikke at tilføje efter kommaet, til udgangen af den nuværende bindende!det er meget lig de bindinger, vi har brugt før; hver enkelt central værdi par blot angiver en begivenhed at lytte til og komitéen til at matche det element, der udløser den begivenhed, som det vigtigste, og tilfælde fører til at fuldbyrde den afsløring af tilfælde som værdi., skifter en kontakt i edit tilstand, på samme måde som vi opbevares en henvisning til den model fungerer under skabelon ejendom af vores contactview klasse, bør vi også indeholde en henvisning til den model, som vi kan bruge til at fungere - kontakt i edit tilstand.tilføje, edittemplate umiddelbart efter modellen ejendom:, edittemplate: _. model ($("# contactedittemplate"). html()), nu kan vi tilføje den begivenhed, som selv, som også bør gå i, contactview, klasse efter de eksisterende, deletecontact() metode.First, we'll add the ,editContact(), method:,editContact: function () { this.$el.html(this.editTemplate(this.model.toJSON())); var newOpt = $("<option/>", { html: "<em>Add new...</em>", value: "addType" }), this.select = directory.createSelect().addClass("type") .val(this.$el.find("#type").val()).append(newOpt) .insertAfter(this.$el.find(".name")); this.$el.find("input[type='hidden']").remove(); },,We start out by rendering our new ,editTemplate, that we added to the page using Underscore's ,template(), method in the same way that we added each contact using the standard display template.,In order to make editing the type of contact easier we can rend- en særlig kasse, der lader brugeren skifte let mellem eksisterende typer, men vi ønsker også at tage højde for muligheden for, at brugeren kan ønsker at tilføje en ny type.for at give mulighed for dette, vil vi skabe en særlig mulighed for at vælge kasse med teksten, tilføje nye... og en værdi, addtype,., vi skaber nye < udvælge > element ved, createselect(), metode til vores mester opfattelse, og hvis du husker fra den sidste del i denne forelæsning vil vende tilbage, < udvælge > element, der indeholder en < alternativ > for hver enkelt type i - samling.vi giver det en klasse navn, og at få, < udvælge > element til at vise den eksisterende form for kontakt er redigeret, vi satte sin værdi og værdien af de skjulte, < input > tilføjede vi i vores model.vi indsætter nye < udvælge > efter, < input > for kontakt er navn.den nye særlige element er tilføjet som en ejendom, for eksempel, således at vi kan indgå i et samspil med det let. når vi har tilføjet, < udvælge > element for kontakt og type, så vi kan fjerne den skjulte område, således at det ikke forstyrrer at redigere, som vi ser vi på kort tid. vi på dette punkt bør nu være i stand til at tryk, redigere, knap i alle vores kontakter og indholdet af den kontakt, omdannet til form:,,,,,,, at der tilføjes en ny type, en af tilfælde bindinger, tilføjede vi var for, ændre, tilfælde af den type vælg kassen, så vi kan tilføje en kontaktperson, som erstatter, < udvælge >, kasse med en standard < input > element: hvis (her. vælg. val() = = = "addtype") (. vælg. remove(). $(< input /> "(" klasse ":" type "}). insertafter (det. $el. (" "). focus();}, når, < udvælge > element er værdi ændringer, vi først undersøge, om dens værdi, addtype, og hvis vi fjerner element fra side og skaber en ny < input > element til at erstatte det.vi indsætter nye element ved hjælp af jquery er, insertafter(), metode og fokusere klar tekst ind.,, og ajourfører den model, vi kan tilføje, at næste kontakt vil tage de ændringer, der er foretaget i edit form og ajourføre data i den model.tilføje, saveedits(), metode umiddelbart efter, editcontact(), metode, som vi tilføjede:, saveedits: funktion (e) (f. preventdefault(), var formdata = {}, tidligere =. model. previousattributes(). $(e.target). nærmeste (""). ("bidrag"). der tilsættes ("foto"). hver (funktion () (var - el = $(dette). formdata [el. attr ("time")] = el. val().}); hvis (formdata.photo = = = ") (overstreges, formdata.photo;}. model. der formdata).. render(); hvis (prev.photo = = =" /img /indikation af en art. men heller ikke dér er menneskene sikre ") (overstreges, prev.photo;} _. hver (kontakter, funktion (kontakt) (hvis (_. svarertil (kontakt, tidligere) {kontakter. splejsning (_. indexof (kontakter, kontakt), 1, formdata)}})}, først og fremmest, skaber vi en tom element til at opbevare data, som er blevet indført i den form og opbevarer en kopi af, previousattributes, af den model, der tilhører den holdning, vi arbejder med.det, previousattributes, ejendom af modeller er en data - butik rygrad har for os, så vi kan nemt se, hvad en attribut er tidligere attribut data var. vi så får hver input element fra form ved hjælp af en kombination af jquery er, find(), metode og: input, filter, som giver os alle form områder.vi ønsker ikke at annullere eller redde, < knap >, elementer, så vi fjerner dem fra udvælgelsen af jquery er, not(), metode, når vi har vores samling af områder, der iterate over dem ved hjælp af jquery er, each(), metode og for hvert punkt i indsamling, vi tilføje en ny nøgle til vores, formdata, objekt ved hjælp af det nuværende punkt klasse, og en ny værdi ved hjælp af den løbende posters værdi. når vi omdanne redigerbar kontakt tilbage til en normal kontakt, vi ønsker ikke at miste den misligholdelse, foto, hvis et nyt foto er ikke blevet valgt.for at sikre, at vi ikke mister misligholdelse billede, kan vi slette, foto, ejendom fra vores, formdata, gøre indsigelse, hvis dens værdi er blank.,, rygraden modeller har setter metode, der kan anvendes til at opstille en attribut,.,, rygraden modeller har setter metode, der kan anvendes til at opstille en attribut.for at ajourføre denne model er oplysninger, vi bare kalde den, set(), metode, som går på, formdata, genstand, vi har udarbejdet.når dette er gjort, vi kalder det synspunkt, er, render(), metode og vores nyligt ajourført model skal leveres tilbage til side, med eventuelle ajourførte oplysninger fra den form, som vi tidligere har gjort det, vi har behov for at ajourføre de oplysninger, der er lagret i vores oprindelige, kontakter, system, således at filtrere lyset ikke mistet de ændringer, vi har foretaget.vi gør det på en meget lignende måde som før, først undersøge, om den, foto, fast ejendom, er en standardværdi og fjerne det i bekræftende fald, og derefter ved hjælp af en kombination af understrege, each(), og iseqaul(), metoder til at finde det i de kontakter, system, der har ændret sig.det er her, vi bruger, previousattributes, at vi reddede tidligere. vi kan ikke bruge den nuværende model mere, fordi dets egenskaber, er blevet ajourført, vi bruger den indfødte javascript er, splice(), funktion at ajourføre, kontakter, vifte.som før, vi får det indeks for post til at ajourføre ved hjælp af understrege, indexof(), metode, som det første argument, splice(), og den funktion, at ajourføre et enkelt punkt på dagsordenen med det andet argument.denne gang skal vi levere vores, formdata, formålet med det tredje argument.når splice(), modtager tre eller flere argumenter, den tredje argument er de data, der skal erstatte de data, der netop er blevet fjernet,.,, at annullere den klippe, vi har en knap til, at vi er nødt til at tilføje en kontaktperson for – de aflyse knap.denne metode vil være meget enkelt, og det vil bare skifte kontakt til ikke - edit tilstand, ved hjælp af de oprindelige data fra den model.tilføje denne metode efter, saveedits(), metode:, canceledit: funktion () (denne. render();}, det er alt, hvad vi skal gøre.vi har allerede en metode, der tager en model og gør det som et syn på den side, så vi kun kalde denne metode og den oprindelige model data vil blive benyttet til at genskabe den første kontakt.det er nyttigt, for selv hvis nogen ændringer af data i form af områder, mens de er i kontakt med edit tilstand, når de ikke knappen er trykket, disse ændringer vil være tabt.,, smdrg., i denne del af ministeriet, vi har set på, hvordan vi kan opdatere data af en eksisterende model, snarere end at skabe et helt den nye model.for at gøre dette har vi i alt væsentligt er bare nødt til at ringe til en model, set(), metode og bestå i den nye attributter, som vi ønsker at gennemføre, som med rygrad, men vi har kun dækket en brøkdel af, hvad disse biblioteker give, der er meget mere, vi kan bruge, når bygningskompleks, ansøgninger om forenden.,, så vi, men vi er også nødt til at overveje, hvordan vi kan ændre den opfattelse, at give de besøgende at komme ind på de data, der vil blive fastsat som den nye attributter.i dette eksempel, vi har opnået dette ved at skabe en model til at håndtere så form fyldt med eksisterende attribut data, som brugeren kan overtype ændres. i løbet af denne serie, vi har set på alle de vigtigste bestanddele i rygraden, herunder modeller, samlinger, synspunkter og routere og begivenheder.vi har også set på nogle af de metoder og egenskaber, der er fastsat i rygrad, som vi kan bruge til at interagere med forskellige konstruktioner til at udarbejde en integreret, funktion og anvendelse, men en grundlæggende, samt at lære noget rygrad grundlæggende, et af de vigtigste aspekter af den pædagogiske var i, hvordan ansøgningen er struktureret med alle vores kode organiseret på en logisk og sammenhængende måde.ansøgninger, skrevet i denne stil kan være meget lettere at vende tilbage til og opretholde på lang sigt.meget af vores funktioner var hændelsesspecifik, enten i forbindelse med aktioner af besøgende i form af eu - erhvervsgrenen, hvis hjælpere, men nogle har også drevet af ændringer til indsamling og udløses manuelt på et passende tidspunkt i vores kodeks. vi har også set på nogle af de værker, der leveres af understrege, som har givet os let. metoder til at arbejde med genstande og system, der danner grundlaget for vores anmodning.som med rygrad, men vi har kun dækket en brøkdel af, hvad disse biblioteker give, der er meget mere, vi kan bruge, når bygningskompleks, ansøgninger om forenden.





Previous:
Next Page: