fælles side, anvendelse med rygrad. er

, fælles side, anvendelse med rygrad. er,,,,, 123,,,,,,,,, 65,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, backbone.js er en javascript ramme for opbygning af fleksible net ansøgninger.det kommer med modeller, samlinger, synspunkter, arrangementer, router og et par andre kendetegn.i denne artikel, kan vi udvikle en enkelt eller en ansøgning, der støtter at tilføje redigering og fjerne opgaver.vi bør også være i stand til at markere en opgave, som er udfærdiget, og arkiv.for at holde denne post er længde rimelige, vi ikke vil omfatte en meddelelse med en database.alle oplysninger vil blive holdt på client-side.,,, opsætning, her er sagen, struktur, som vi bruger:,, css └── styles.css er └── samlinger └── todos.js └── modeller └── todo.js └── sælger └── backbone.js └── jquery-1.10.2.min.js └── underscore.js └── synspunkter └── app.js └──.,, der er få ting, der er indlysende. ligesom /css /styles.css og /index en.html.de indeholder css styles og html oveni.i forbindelse med backbone.js, model er et sted, hvor vi holder vores data.så vi alle sammen vil være modeller.og fordi vi vil have mere end én opgave, vil vi sætte dem ind i en samling.erhvervslivets logik er fordelt mellem de synspunkter og den vigtigste anvendelse er fil, app. js,.backbone.js kun har et svært afhængighed - underscore.js.den rammer spiller også meget godt med jquery, så de går til den leverandør, fortegnelse.vi har brug for nu, er en lille html oveni, og vi er klar til at gå.,, <!doctype html> <html> <head> <title>My TODOs</title> <link rel="stylesheet" type="text/css" href="css/styles.css" /> </head> <body> <div class="container"> <div id="menu" class="menu cf"></div> <h1></h1> <div id="content"></div> </div> <script src="js/vendor/jquery-1.10.2.min.js"></script> <script src="js/vendor/underscore.js"></script> <script src="js/vendor/backbone.js"></script> <script src="js/App.js"></script> <script src="js/models/ToDo.js"></script> < manuskript src = "js /samlinger /todos. er" > < /manuskript > < manuskript > window.onload = function() (//bootstrap} < /manuskript > < /organ > < /html > og, som du kan se, er vi også alle de eksterne javascript filer til bunden, så det er en god praksis, at gøre det her ved udgangen af det organ, tag.vi skal også forberede bootstrapping af ansøgningen.der er en beholder til indhold, en menu og en titel.de vigtigste navigation er en statisk element, og vi ændrer ikke på det.vi vil i stedet for indholdet af afsnit og, div. under det.,, planlægning af den anvendelse, det er altid godt at have en plan, før vi begynder på noget.backbone.js ikke har en super strikse arkitektur, som vi skal følge.det er en af fordelene ved den ramme.så før vi begynder med gennemførelsen af forretningslogikken, lad os tale om grundlag.,, namespacing, en god praksis er at sætte deres kode i sit eget område.registrering af globale variabler eller funktioner, der er ikke en god idé.vi vil skabe en model, en indsamling, en router og få backbone.js synspunkter.alle disse elementer bør leve i det private rum., app.js, vil indeholde den klasse, der holder det hele. //app.js var app = (function() {var api = {synspunkter: {}, modeller: {}, samlinger: {}, indhold: null, router: null, todos: null, lokalitet: function() {this.content = $("# indhold");}, changecontent: funktion (el) {. indhold. empty(). både (el); tilbage.}, titlen: funktion (str) ($(h1). tekst (str); tilbage.}), var viewsfactory = {} var router = rygrad. router. udvide ({'); api.router = nye router(); tilbage api.}) (), frem for en typisk gennemførelsen af fevealing modul mønster.de api, variabel er objekt, der er tilbage, og det er det offentlige metoder i klassen.de synspunkter, modeller og samlinger, egenskaber vil fungere som indehavere af klasse tilbage af backbone.js.det, indhold, er en jquery element, fremhæver de vigtigste brugerens grænseflade beholder.der er to hjælper metoder her.den første ajourføringer, som beholder.det andet sæt side titel.så vi har defineret et modul, viewsfactory,.det vil give vores synspunkter, og til sidst, vi skabte router., kan man spørge, hvorfor har vi brug for en fabrik til synspunkter?ja, der er nogle fælles mønstre, samtidig med backbone.js.en af dem er relateret til oprettelse og anvendelse af synspunkter.,, var viewclass = rygrad. betragtning. udvide ({* logik her * /}) var lyset = nye viewclass(),,, det er godt at nulstille synspunkter kun én gang og efterlade dem i live.når data har ændret sig, vi normalt kalder metoder i betragtning og ajourføre indholdet af dens, el, objekt.den anden meget populær tilgang er at genskabe hele synspunkt eller erstatte hele dom element.men det er ikke godt for en forestilling synspunkt.så, vi normalt ender med et værktøjs - klasse, der skaber et tilfælde af den opfattelse, og vender tilbage, når vi har brug for det.,, komponenter definition, har vi en namespace, så nu kan vi begynde at skabe komponenter.her er hvordan hovedmenu ser: //synspunkter /menu.js app.views.menu = rygrad. betragtning. udvide ({påbegynd: function() {}, gøre: function() {}}), har vi skabt en ejendom, menu, som har klasse af sejlads.senere kan vi tilføje en metode på fabrikken modul, som skaber et eksempel på det, var viewsfactory = {menu: function() (hvis (!denne. menuview) (this.menuview = nye api. synspunkter. menu ((el: $("# menu")})} tilbage this.menuview;}};,, ovenfor, er, hvordan vi skal håndtere alle de synspunkter, og det vil sikre, at vi får kun én og samme sag.denne teknik fungerer godt, i de fleste tilfælde.,, strøm, indgangssted med programmet, er, app.js, og dets, lokalitet, metode.det er, hvad vi kalder det, onload, chef for, vindue, objekt.,, window.onload = function() (app. init();}, efter at de definerede router tager kontrol.baseret på url, beslutter det, der fører til at udføre.i backbone.js, har vi ikke den almindelige model for registeransvarlige arkitektur.den registeransvarlige er forsvundet, og de fleste af logikken i de synspunkter.så i stedet, vi overfører modeller direkte til metoder, inden de synspunkter og få en øjeblikkelig ajourføring af brugergrænsefladen, når data har ændret sig.,, forvaltning af data, den mest vigtige ting i vores lille projekt er data.vores arbejde er, hvad vi bør håndtere, så lad os begynde derfra.her er vores model definition. //model /todo.js app.models.todo = rygrad. model. udvide ({misligholdelse (afsnit: "eller", arkiveres: falske, gjort: falske}}), kun tre områder.for det første indeholder teksten til den opgave, og de to andre er flag, som definerer den status, den rekord.,, alt indenfor rammerne er faktisk en begivenhed kurer.og fordi den model er ændret med maskinsættere, led ved, når dataene er ajourført og kan give resten af systemet for det.når du binde noget til disse meddelelser, din ansøgning vil reagere på ændringer i den model.det er en meget stærk faktor i rygraden. det, som jeg sagde i begyndelsen, vil vi have mange papirer, og vi vil sætte dem ind i en samling, alle sammen,.,, //samlinger /todos.js app.collections.todos = rygrad. samling udvide ({påbegynd: function() {. tilføje ((afsnit - "lære javascript grundlæggende"}); den. der tilsættes ((afsnit: "gå til backbonejs. org"}); den. der tilsættes ((afsnit: "at udvikle en rygrad anvendelse"})}, model: app.models.todo: funktion (indeks) (hvis (indeks > 0) (var - tmp =. modeller [index-1]. modeller [index-1] =. modeller [indeks]. modeller [og] = tmp; dette. udløser ("ændring"); d),ejer: funktion (indeks) (hvis indeks (< dette. modeller. length-1) {var tmp =. modeller [indeks + 1]. modeller [1] = indeks +. modeller [indeks]. modeller [og] = tmp; dette udløser ("ændringer".)), arkiv - funktion (arkiveret, indeks) {. modeller [indeks]. sæt ("gamle", arkiveres)}, changestatus: funktion (gjort, indeks) {. modeller [indeks]. sæt ("gjort", gjort)}}),,,, påbegynd, metode er indgangssted for indsamling.i vores tilfælde, vi har tilføjet et par opgaver ved misligholdelse.naturligvis i den virkelige verden vil oplysningerne kommer fra en database eller et andet sted.men at holde dig fokuseret, vil vi gøre det manuelt.den anden ting, som er typisk for samlinger, sætter, model, ejendom.det fortæller den klasse, hvilken slags oplysninger opbevares.resten af de metoder, gennemføre skik logik, i forbindelse med de elementer i vores anvendelse.op og ned, funktioner, ændre rækkefølgen af alle sammen.for at forenkle tingene, vi vil identificere alle at gøre med et indeks i indsamlingen er system.dette betyder, at hvis vi ønsker at hente en bestemt sige, at vi bør påpege dets indeks.så, bestilling er bare bytte de elementer i et system.så du kan gætte fra koden ovenfor, this.models, er det system, som vi taler om.-, arkiv, og changestatus, sæt egenskaber i det pågældende element.vi sætter disse metoder, da disse synspunkter vil få adgang til, alle sammen, indsamling og ikke til de opgaver, der direkte.,, og vi behøver ikke at skabe nogen modeller fra, app.models.todo, klasse, men vi er nødt til at skabe et eksempel fra, app.collections.todos, indsamling, //app.js lokalitet: function() {this.content = $("# indhold"); this.todos = nye api. samlinger. todos(); tilbage.}, viser vores første betragtning (vigtigste navigation), den første ting, vi er nødt til at vise, er den vigtigste anvendelse er navigation, //synspunkter /menu.js app.views.menu = rygrad. betragtning. udvide ((model: _. model ($("# tpl menu"). html()), påbegynd: function() {. render();}, gøre arbejdet.tion() {. $el. html (. skabelon ((})}}), er det kun ni linjer kode, men mange fede ting, der sker her.den første er at fastsætte en skabelon.hvis du husker, tilføjede vi underscore.js til vores app?vi skal bruge sin blive motor, fordi det virker godt, og det er let nok at bruge.,, _. skabelon (templatestring [data], [(]),, hvad du har på, er en funktion, der godkender et objekt med dine oplysninger afgørende værdi par og, templatestring, html oveni.okay, så det accepterer en html snor, men hvad er $("# tpl menu"). html(), gør der?When we are developing a small single page application, we normally put the templates directly into the page like this:, ,//index.html <script type="text/template" id="tpl-menu"> <ul> <li><a href="#">List</a></li> <li><a href="#archive">Archive</a></li> <li class="right"><a href="#new">+</a></li> </ul> </script> , ,And because it's a script tag, it is not shown to the user. fra et andet synspunkt er det en gyldig dom node, så vi kunne få dens indhold med jquery.så, kort snippet over tager indholdet af det manuskript, tag.,,, gøre, metode er meget vigtigt i backbone.js.det er den funktion, som viser de data.normalt, du binder begivenheder fyret af modeller, direkte til denne metode.men for de vigtigste menu, har vi ikke brug for sådan en opførsel.,,. $el. html (. skabelon ((}),,,. $el, er et objekt, der er skabt af rammer og alle synspunkt er det som udgangspunkt (der er en $infront af, el, fordi vi har jquery medtages).og ved misligholdelse, er det et tomt, < div > < /div >,.jo, du kan ændre det ved at bruge den, tagname, ejendom.men hvad der er mere vigtigt, er, at vi ikke giver en merværdi til det formål direkte.vi ændrer ikke det, vi er ved at ændre dens indhold.der er en stor forskel mellem den ovenfor, og den næste:,,. $el = $(. skabelon ((}), pointen er, at hvis du ønsker at se ændringer i browseren, du skal ringe til gøre metode før, at vedføje den opfattelse, at den dom..ellers kun tomme div vil være knyttet til.der er også et andet scenario, hvor du satte synspunkter.og fordi du er ved at ændre den ejendom, direkte, skal modervirksomheden komponent ikke er ajourført.den bundne begivenheder kan også blive knust, og du har brug for at fastgøre lyttere igen.så du skal kun ændre indholdet af det. $el, og ejendommens værdi.,, for nu er klar, og vi er nødt til at nulstille det.lad os tilføje det til vores fabrik modul: //app.js var viewsfactory = {menu: function() (hvis (!denne. menuview) (this.menuview = nye api. synspunkter. menu ((el: $("# menu")})} tilbage this.menuview;}}, sidst blot kalder den menu, metode i bootstrapping område: //app.js lokalitet: function() {this.content = $("# indhold"); this.todos = nye api. samlinger. todos(); viewsfactory. menu(); tilbage.}, bemærker, at mens vi er ved at skabe en ny instans fra sejlads er klasse, vi vedtager en allerede eksisterende dom element, $("# menu").så, her. $el, fast ejendom i det synspunkt, er faktisk at pege på $("# menu"),.,, at ruter, backbone.js støtter, skubbe, operationer.med andre ord, du kan manipulere med de nuværende browser er url og rejse mellem sider.men vi holder os til den gamle hash - ip - adresser, f.eks. /&#edit /3,.,, //app.js var router = rygrad. router. udvide ({ruter: {"arkivet": "arkivet", "nye": "newtodo", "klippe /: indeks": "edittodo", "slette /: indeks": "deltetodo", "": "liste"}, liste: funktion (arkiv) {}, arkiver: function() {}, newtodo: function() {}, edittodo: funktion (indeks) {}, deltetodo: funktion (indeks) {}})., frem for vores router.der er fem ruter er defineret i en hash objekt.det vigtigste er, hvad man vil - i browseren adresse bar og værdi er den funktion, som vil blive indfriet.bemærker, at der er: indeks, om to af disse ruter.det er syntaks, som du har brug for, hvis de ønsker at støtte en dynamisk ip - adresser.i vores tilfælde, hvis du type,&#edit /3, edittodo, vil blive gennemført med parameter, indeks = 3.den sidste række indeholder en tom snor, hvilket betyder, at det har hjemme side af vores ansøgning.,,, der viser en liste over alle de opgaver, så alt, hvad vi har bygget, er den vigtigste grund til vores projekt.det vil indhente oplysninger fra indsamling og printe den ud på skærmen.vi kan bruge den samme holdning til to ting - - med alle de aktive todos og vise dem, der er arkiveret.,, før at fortsætte med den liste, gennemførelse, lad os se, hvordan det faktisk er igangsat.,, //i app.js synspunkter fabrik liste: function() (hvis (!denne. listview) (this.listview = nye api. synspunkter. liste ((model: api.todos})} tilbage this.listview;}, se, at vi går i indsamlingen.det er vigtigt, fordi vi vil senere anvendelse, this.model, adgang til de lagrede data.fabrikken vender vores liste synspunkt, men routeren er fyren, der skal lægge den til side. //i app. det er router liste: funktion (arkiv) (var - syn = viewsfactory. list(); api. afsnit (arkiv? "arkiver: ":" din todos: "). changecontent (betragtning. $el); synspunkt. setmode (arkiv?"arkivet ": null). render();}, for nu, metoden, liste i routeren er uden nogen som helst parametre.så den opfattelse, ikke er i arkivet, mode, vil det vise, kun de aktive todos. //synspunkter /list.js app.views.list = rygrad. betragtning. udvide ({tilstand: null, begivenheder: {}, påbegynd: function() {var handleren = _. bind (this.render, denne). model. bind ('change, kontakt). model. bind ('add, kontakt). model. bind ('remove, kontakt)}, gøre: function() {}, priorityup: funktion (e) {}, prioritydown: funktion (e) {}, arkiv - funktion (e) {}, changestatus: funktion (e) {}, setmode: funktion (modus) (this.mode = tilstand; tilbage.}});,,, mode, ejendom, vil blive anvendt i forbindelse med destruktion.hvis denne værdi er mode = "arkivet", så kun de arkiverede todos vil blive vist.de begivenheder, der er et objekt, som vi vil fylde lige med det samme.det er det sted, hvor vi sætter den dom begivenheder kortlægning.resten af de metoder, der er svar på interaktion med brugeren, og at de er direkte forbundet med den nødvendige elementer.for eksempel, priorityup, og prioritydown ændringer bestilling af alle sammen.-, arkiv, flytter posten til arkivet., changestatus, blot er, som gjort. det er interessant, hvad der foregår inde i, påbegynd metode.vi har tidligere sagt, at man normalt vil binde de ændringer i model (indsamling i vores tilfælde) til at gøre, metode i betragtning.du kan type. model. bind ('change, det. gøre).men snart vil de bemærke, at det her, nøgleord, i gør, metode ikke at se sig selv.det er, fordi anvendelsesområdet er ændret.som en løsning på det, vi er ved at skabe en kontakt med en allerede definerede anvendelsesområde.det er, hvad understreger, er bindende, funktion, bruges til., og her er gennemførelsen af gøre, metode. //synspunkter /list.js gøre: function() {) var html = < ul klasse = "listen" > - =; dette. model. hver (funktion (todo, indeks) (hvis (self.mode = = = "arkivet"?todo. kom ("gamle") = = = sandt: todo. kom ("gamle") = = = falske) (var - skabelon = _. model ($("# tpl liste punkt"). html()) http: //+ = skabelon ((afsnit: todo. (""), indeks: indeks, archivelink: self.mode = = = "arkivet"? "unarchive ":" arkivet "gjort: todo. (" ")."ja "," nej ", donechecked: todo. (" ").kontrolleret = = "kontrol": ""})}}) http: //+ = < /ul > ';. $el. html (http: //). delegateevents(); tilbage.}, vi er skruet gennem alle modellerne i indsamling og skabe en html snor, som senere indsættes i opfattelse er dom element.der er for få kontroller, der adskiller todos fra arkiveret til aktiv.opgaven er mærket som gjort, ved hjælp af en afkrydsningsfelt.så, viser, at dette er vi nødt til at vedtage en kontrolleret = = "kontrol", tillægger dette element.du kan mærke, at vi bruger det. delegateevents(),.i vores tilfælde, det er nødvendigt, fordi vi er af den opfattelse, at løsgøre og fastgørelse af dom.ja, vi er ikke i stedet for de vigtigste element, men begivenhederne "stab er fjernet.det er derfor, vi er nødt til at fortælle backbone.js tillægger dem igen.The template used in the code above is:, ,//index.html <script type="text/template" id="tpl-list-item"> <li class="cf done-<%= done %>" data-index="<%= index %>"> <h2> <input type="checkbox" data-status <%= doneChecked %> /> <a href="javascript:void(0);" data-up>&#8593;</a> <a href="javascript:void(0);" data-down>&#8595;</a> <%= title %> </h2> <div class="options"> <a href="#edit/<%= index %>">edit</a> <a href="javascript:void(0);" data-archive><%= archiveLink %></a> <a href="#delete/<% = indeks% > "> slette < /a > < /div > < /li > < /manuskript >,, bemærke, at der er en css klasse defineret ringede, ja,, som giver det at gøre med en grøn baggrund.ud over det, der er en samling af forbindelser, som vi vil bruge til at gennemføre den nødvendige funktionalitet.de har alle data attributter.knudepunkt i et element, li, er data indeks.værdien af denne attribut viser indekset for opgave med indsamling.bemærker, at den særlige udtryk, pakket i <% =...% >, sendes til kommissionen, model, funktion.det er de data, der er sprøjtet ind i modellen. det er tid til at tilføje nogle begivenheder, at udsigten.,, //synspunkter /list.js begivenheder: {'klik [data] ":" priorityup "," klik [data? ":" prioritydown "," klik "data arkiv]": "arkiv, klik input - data status]": "changestatus'). i backbone.js tilfælde definition er bare hash.- for det første type navn af tilfælde og i komitéen.værdierne af de egenskaber er faktisk af den opfattelse, at metoder. //synspunkter /list.js priorityup: funktion (e) (value index = parseint (e.target. parentnode. parentnode. getattribute ("data indeks"); denne. model. (indeks)}, prioritydown: funktion (e) (var indeks = parseint (e.target. parentnode. parentnode. getattribute ("data indeks"); denne. model. (indeks)}, arkiv - funktion (e) (value index = parseint (e.target. parentnode. parentnode. getattribute ("data indeks"); dette arkiv (. model. this.mode!= = "arkivet", indeks)}, changestatus: funktion (e) (value index = parseint (e.target. parentnode. parentnode. getattribute ("data indeks"); denne. model. changestatus (e.target.checked, indeks)}, er vi her med, e.target, kommer i til den kontaktperson.det tyder på, at dom element, der udløste den begivenhed.vi får de indeks, der gør det sammen, og modellen opdateres i indsamlingen.med disse fire opgaver, vi er færdige med vores klasse og nu data er angivet til side.,, som vi nævnte ovenfor, vil vi bruge den samme holdning til, arkiver, s.,, liste: funktion (arkiv) (var - syn = viewsfactory. list(); api. afsnit (arkiv? "arkiver: ":" din todos: "). changecontent (betragtning. $el); synspunkt. setmode (arkiv?"arkivet ": null). render();}, arkiver: function() {. liste (korrekt)), ovenfor er den samme rute handleren som før, men denne gang, rigtigt, som en parameter.,, at tilføje & redigering todos, efter at listen mener, at vi kunne skabe et, som viser en form for tilsætning af og redigering opgaver.her er, hvordan dette nye klasse er skabt: //app.js /synspunkter fabrik form: function() (hvis (!denne. formview) (this.formview = nye api. synspunkter. form ((model: api.todos}). ("sparede", function() (api. router. navigere ("" {udløser: sande})}) tilbage this.formview;}, stort set det samme.men denne gang er vi nødt til at gøre noget, når den form, der er indgivet.og det er fremad, at brugeren hjemmeside.som jeg sagde, enhver genstand, der strækker sig backbone.js klasser, er faktisk en begivenhed kurer.der er metoder, som på og udløser, som du kan bruge.,, før vi fortsætter med henblik på kode, lad os se på http: //model:,, < manuskript type = "tekst /model" id = "tpl form" > < form > < textarea > <% = afsnit% > < /textarea > < knap > medmindre < /knap > < /form > < /manuskript >,, vi har. textarea, og en knap.skabelonen forventer, titel, parameter, der skal være en tom snor, hvis vi tilføjer en ny opgave,.,, //synspunkter /form.js app.views.form = rygrad. betragtning. udvide ((indeks: falske begivenheder: {"klik": "redde"}, påbegynd: function() {. render();}, gøre: funktion (indeks) (var - skabelon, html = $("# tpl form"). html(); hvis (type indeks = = "usynlig") (this.index = falske template = _. skabelon (http: //(afsnit: ""})} andre (this.index = parseint (indeks); this.todoforediting =. model. i (. indeks) template = _. model ($("# tpl form"). html() (afsnit: det. todoforediting. kom ("afsnit")})}. $el. html (model). $el. finde ("textarea"). focus(); dette. delegateevents(); tilbage.}, undtagen: funktion (e) (f. preventdefault(); var afsnit = det. $el. finde ("textarea"). val(); hvis (afsnit = = ") (varsling (" tom textarea! "); tilbage;} hvis (this.index!= = falske) (denne. todoforediting. sæt ("titel", afsnit)} andre {. model. der tilsættes ((afsnit: afsnit})}. udløser ("sparede")}}), den opfattelse, er kun 40 linjer kode, men det gør sit job godt.der er kun en begivenhed, der er knyttet, og dette er den klikkende af save - knappen.det gør metode retsakter forskelligt afhængigt af de døde, indeks, parameter.for eksempel, hvis vi skal udarbejde en todo, vi vedtager det indeks, og hent den samme model.hvis ikke, så form er tomme, og en ny opgave, vil blive skabt.der er flere interessante punkter i kode ovenfor.for det første, at vi brugte. focus(), en metode til at bringe fokus til den form, når det synspunkt, er gjort.igen, delegateevents, funktion bør kaldes, fordi form kan adskilles og fast igen.de red, metode begynder med f. preventdefault(),.det fjerner misligholdelse opførsel af knap, som i visse tilfælde kan fremlægge form.og til sidst, når alt er gjort udløste vi reddede, begivenhed anmeldende omverdenen om, at alt er gemt i indsamling, er der to metoder til router, som vi er nødt til at udfylde. //app.js newtodo: function() {var lyset = viewsfactory. form(); api. afsnit ("skabe nye todo:"). changecontent (betragtning. $el); synspunkt. render()}, edittodo: funktion (indeks) {var lyset = viewsfactory. form(); api. afsnit ("klippe"). changecontent (betragtning. $el), betragtning. gøre (indeks)), forskellen mellem dem er, at vi vedtager i et indeks, hvis, redigere /: indeks, rute følges op.og naturligvis er titlen på side er ændret i overensstemmelse hermed.,, at slette en plade af indsamling, for dette element, vi ikke har brug for en grund.hele arbejde kan ske direkte i routeren er kontaktperson.,, deltetodo: funktion (indeks) (api. todos. fjerne (api. todos. (parseint (indeks)); api. router. navigere ("" {udløser: sande})}, ved vi, at indekset det, som vi ønsker at slette.der er en fjern, metode til indsamling af klasse, som accepterer, at en model objekt.til sidst lige frem, at brugeren hjemmeside, som viser den ajourførte liste.,, konklusion, backbone.js har alt hvad du har brug for til at opbygge et fuldt funktionsdygtigt, enkelt side anvendelse.vi kan binde det til hvile back - end - tjeneste og ramme vil synkronisere data mellem din app og databasen.den begivenhedsspecifikke metode fremmer modulopbygget programmering, sammen med en god arkitektur.jeg er personligt af backbone.js for flere projekter, og det fungerer meget godt.



Previous:
Next Page: