adgang til eksterne data

, adgang til eksterne data,,,,, 1,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en række kaldes knockout koncist. interaktive bindingsanimating knockout, for de fleste web - ansøgninger, indsamling af brugerinput er relativt ubrugelige, hvis du ikke kan klare, at data til en server.i denne lektie, vi skal lære at sende og modtage oplysninger fra en server med ajax anmodninger.det sætter, model, tilbage til den model for viewmodel design mønster for knockout. js,.,,,, figur 27: forøgelse af modellen tilbage i vores mvvm mønster, huske på, at knockout.js er designet til at være forenelig med andre client-side eller server-side teknologi.denne række anvendelser jquery er $. getjson() og $. post() funktioner, men du er fri til at bruge alle javascript ramme, der kan sende og modtage json data.det server-side scripting sprog er helt op til dig.i stedet for at præsentere back - end - kode prøver, vi kun omfatter json data forventes af knockout.js.at skabe denne produktion bør være trivielt at gennemføre i enhver moderne scripting sprog.,, en ny html form, vi skal bruge en ny html side til at eksperimentere med knockout.js/ajax integration.da denne side skal interagere med nogle server-side kode, så det er tilgængelige fra dokument rod af dit lokale server.We’ll start out with something similar to the previous lesson:, <html lang='en'> <head> <title>External Data</title> <meta charset='utf-8' /> <link rel='stylesheet' href='style.css' /> </head> <body> <h2> <form action="#" method="post"> <p>First name: <input data-bind='value: firstName' /></p> <p>Last name: <input data-bind='value: lastName' /></p> <div> Your favorite food: <select data-bind='options: activities, value: favoriteHobby'></select> <em>Load Data</button></em></div></div> </form> <script src='knockout-2. 1.0. er "> < /manuskript > < manuskript src ='jquery-1.7.2. er" > < /manuskript > < manuskript > funktion personviewmodel() {var selv = det; self.firstname = ko. observerbare (""); self.lastname = ko. observerbare (""); self.activities = ko. observablearray ([...]); self.favoritehobby = ko. observerbare ("");} ko. applybindings (nye personviewmodel()). < /manuskript > < /organ > < /html > det er en grundlæggende form, med et par, < input > områder, så vi kan se, hvordan til at sende og modtage oplysninger fra serveren.bemærker, at vi også jquery bibliotek, før vores custom < manuskript > element.,, lastning data, du sikkert har bemærket, at i modsætning til tidligere erfaringer, alle vores observerbare fænomener er tomme.i stedet for hårdt kodning af data i vores viewmodel, vi skal lade den fra en server med jquery er $. getjson() metode.først, lad os få en knap til at hente data (typisk, du vil automatisk belastning data, hvis deres ansøgning starter op, men på denne måde, kan vi se, hvordan det hele fungerer trinvis):, < p > < knap data binder ='click: loaduserdata "> belastning data < /knap > < /p >, fører denne knap bruger $. getjson(), for at kalde server-side manuskript:, self.loaduserdata = function() {$. getjson (" /få bruger data "funktion (data) (indberetning (data. firstname)})} den, få brugerdata, snor, bør være vejen til manuskriptet.igen, så længe det kan registrere og afkode json, server-side sprog kan anvendes med knockout.js.for eksempel bør det afkast, som en json formaterede snor, der ligner følgende: {"firstname": "john", "lastname": "smith", "virksomhed": ["golf", "i kajak", "web udvikling", "favoritehobby": "golf"), og de $. getjson(), metode automatisk betyder den her tilbage i en javascript formål og sender det til vores metode via data parameter.det er trivielt at ajourføre vores viewmodel med nye oplysninger:, self.loaduserdata = function() {$. getjson ("/få bruger data" funktion (data) (self. firstname (data. firstname); selv. lastname (data. lastname); selv. aktiviteter (data. aktiviteter); selv. favoritehobby (data. favoritehobby)})}, efter at trykke, belastning, data, $. getjson(), belastninger, data fra - - og bruger det til at ajourføre alle vores viewmodel er observerbare fænomener.som altid, knockout.js automatisk opdatering form områder til at matche.,, at redde data for normale web - ansøgninger, at data er ganske enkelt et spørgsmål om omregning af genstande til json og sende det til server med noget som jquery er $. post() metode.det er noget mere kompliceret for knockout.js ansøgninger.det er ikke muligt at anvende en standard json serializer til at konvertere de protesterer mod en snor, fordi viewmodels brug observerbare fænomener i stedet for den normale javascript egenskaber.kan du huske den observerbare fænomener er faktisk fungerer, så forsøger at nå, virkelig sender resultatet til en server ville have uventede resultater. heldigvis knockout.js giver en enkel løsning på dette problem: den ko. tojson(), nyttefunktion.passerer et objekt til ko. tojson() erstatter hele formålet er observerbare egenskaber med deres nuværende værdi og returnerer det resultat, som json snor., skabe en knap, kaldet "redde data og den til en, saveuserdata(), metode på viewmodel.så kan du se json, der genereres af ko. tojson() med følgende: self.saveuserdata = function() {indberetning (ko. tojson (selvstændige)}, trykke på denne knap bør vise den aktuelle data i deres form områder omdannet til et json snor.nu, hvor vi har sluppet af med alle vores observerbare fænomener, vi kan sende det til server til forarbejdning, self.saveuserdata = function() {var data_to_send = {userdata: ko. tojson (selvstændige)} $. post ("/redde bruger data", data_to_send, funktion (data) (varsling ("dine data udstationeret til server!"); ');}, det sender de json snor, der repræsenterer deres viewmodel til et manuskript kaldet, redde bruger data ved hjælp af post - metode.som følge heraf bør finde dit manuskript snoren i henhold til en userdata indrejse i sin post - ordbog.du kan deserialize den json snor til objekt, gem det til din database, eller gøre, hvad slags server-side forarbejdning, du skal gøre.,, kortlægning af data til viewmodels, lastning og redde mekanismer i de to foregående afsnit giver alt hvad du har brug for at skabe rige brugergrænseflader, støttet af en vilkårlig server-side scripting sprog.men manuelt kortlægning ladt data til observerbare fænomener kan være ret kedeligt, hvis du arbejder med mere end blot et par ejendomme.,, kortlægning, stik til knockout.js løser dette problem ved at lade dig automatisk kort json objekter ladt fra serveren til viewmodel observerbare fænomener.i realiteten er en generisk udgave af vores, saveuserdata(), og loaduserdata() metoder.,, kortlægning, stik frigøres som et særskilt projekt, så vi bliver nødt til at downloade det og tage det med i vores html side, før det anvendes:, < manuskript src ='knockout. kortlægning af seneste. er "> < /manuskript >, næste, vi skal til helt at erstatte vores, personviewmodel,.i stedet vil vi bruge jquery er $. getjson(), en metode til at laste nogle foreløbige data fra serveren og lad kortlægningen laver dynamisk generere observerbare fænomener.erstatte hele custom < manuskript > element med følgende:, < manuskript > $. getjson ("/få bruger data" funktion (data) (var - viewmodel = ko. kortlægning. fromjs (data), ko. applybindings (viewmodel)}). <. /manuskript >, når vores ansøgning belastninger, det samme gør en ajax anmodning om oprindelige brugeroplysninger.din server-side manus, få oprindelige data, bør vende tilbage til det samme som prøven json output - data fra afsnit af denne lektion.når data er ladt, skaber vi en viewmodel via ko. kortlægning. fromjs(),.det tager de indfødte javascript objekt, der genereres af manuskriptet og vender hver ejendom i en observerbar.bortset fra saveuserdata() og loaduserdata() metoder, dynamisk, der genereres viewmodel har samme funktioner som personviewmodel. på dette punkt har vi kun, igangsat, vores viewmodel med data fra serveren.kortlægningen laver også lader os, ajourføre, en eksisterende viewmodel på samme måde.lad os gå videre og tilføje en eksplicit, loaduserdata(), metode til viewmodel:, viewmodel.loaduserdata = function() {$. getjson ("/få bruger data" funktion (data) {ko. kortlægning. fromjs (data, viewmodel)})}, i den gamle udgave af loaduserdata(), vi havde manuelt at tildele hver data ejendom til den respektive observerede.men nu, kortlægning, stik gør alt det her for os.bemærk, at vedtage de data, som det første argument formål til ko. kortlægning. fromjs() bevirker, at den ajourføring, viewmodel i stedet for, starter det., kortlægningen laver kun vedrører - data, så saveuserdata(), berøres ikke heraf, bortset fra, at det skal henføres til den viewmodel objekt, viewmodel.saveuserdata = function() {var data_to_send = {userdata: ko. tojson (viewmodel)} $. post ("/redde bruger data", data_to_send, funktion (data) (varsling ("deres oplysninger er blevet stillet til serveren!"); ');}, og nu skal vi tilbage, hvor vi startede i begyndelsen af dette afsnit både, belastning, data og redde data, knapper, bør arbejde, og knockout.js bør holde lyset og viewmodel synkroniseret. og ikke en nødvendig laver for alle knockout.js projekter, kortlægning, stik - gøre det muligt at intensivere komplekse ting uden at tilføje en ekstra linje kode for hver ny ejendom, du tilføje til din viewmodel.,, resumé på denne lektie, vi har lært knockout.js kan kommunikere med en server-side manuskript.de fleste af de ajax beslægtede funktioner kom fra jquery web - ramme, selv om knockout.js giver en pæn nyttefunktion for omregning af de observerbare fænomener på lokalt javascript egenskaber.vi drøftede også kortlægningen laver, som ydede et generisk måde at konvertere en indfødt javascript, gøre indsigelse mod en viewmodel med observerbare egenskaber. husk, knockout.js er en ren client-side bibliotek.det er kun til at forbinde javascript genstande (viewmodels) http: //elementer.når du har dette forhold, der er oprettet, kan du bruge en anden teknologi, i at kommunikere med serveren.på client-side, du kunne erstatte jquery med dojo, prototype, mootools eller andre rammer, der støtter ajax anmodninger.på server-side, mulighed for at asp.net under folkesundhedsprogrammet, django, ruby på skinner, perl, javaserver sider... du forstår.denne adskillelse af bekymringer gør knockout.js en utrolig smidig brugergrænseflade udviklingsredskab. denne lektion er et kapitel i, knockout - kort, en fri ebook fra holdet på syncfusion.,




Previous:
Next Page: