udseende bindinger

, udseende bindinger,,,,, andel,,,,,,,,,,,,,,, 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 succinctly.control-flow bindinginteractive bindinger i det foregående lektie, vi så, hvordan knockout. er kontrollen flow bindinger, skabe en grundlæggende blive system til betragtning kode.kontrol af den visuelle flow bindinger struktur for din ansøgning, men en ægte blive system har behov for mere end blot struktur.knockout. er "udseende bindinger, give dem nøjagtige kontrol over styles og formatering af individuelle elementer.,,, som af dette skrift, knockout.js skibe med seks bindinger til kontrol af forekomst af html elementer:,, tekst: < værdi > - indholdet af et element,.,,:: < værdi > - den html indholdet af et element.,, synlig: < tilstand > - eller skjule et element, som er baseret på visse betingelser.,, css: < objekt > - tilføje css klasser, et element, stil.: < objekt > - definere, stil, giver et element, attr: < objekt > - tilføje vilkårlige attributter til et element, som alle knockout.js bindinger, udseende bindinger altid forekommer inden for de data, der binder, kendetegn på en html element.men i modsætning til kontrol med strøm bindinger af den tidligere lektion, udseende bindinger kun påvirke deres tilknyttede element, de kan ikke ændre skabelon, blokke eller ændre den bindende sammenhæng.,,, tekst, bindende, den tekst, bindende er brødet og smørret i knockout.js.som vi allerede har set teksten bindende viser værdien af en ejendom i en html element:, < td data binder ='text: navn > < /td > du skal kun bruge den tekst, bindende tekst niveau elementer (f.eks. < en >,, < em >, < span > osv.), selv om det kan anvendes til html element.som parameter, teksten bindende tager en datatype, og kaster den til en snor, før de gør det.teksten bindende vil flygte html enheder, så det kan anvendes til sikkert at vise brugergenereret indhold.,, figur 16: den tekst, bindende automatisk fra http: //enheder i betragtning, er det også værd at påpege, at knockout.js forvalter cross - spørgsmål bag kulisserne.for irland, den anvender, innertext, ejendom, og firefox og beslægtede browsere bruger textcontent.,,, html, bindende, html, bindende, kan du gøre en snor som html oveni.det kan være nyttigt, hvis man ønsker at skabe en dynamisk avancen i viewmodel og vise det i din model.for eksempel, du kunne definere en beregnet som kaldet, formattedname, på vores produkt objekt, som indeholder nogle html:, funktion vare (navn, pris, mærkater, rabat) {...this.formattedname = ko. beregnet (function() {tilbage "< stærk >" +. name() + "< /stærk >"), og denne)}, så kunne du gøre formaterede navn med, html, bindende:, < span data binder ='html: featuredproduct(). formattedname "> < /span >, mens det ødelægger mål om at adskille indhold fra præsentation, html, bindende, kan vise sig at være et alsidigt værktøj, når det anvendes velovervejet.,, fig. 17:, html, bindende at http: //enheder i betragtning, når du gøre dynamisk html enten gennem, html, bindende eller asp.net-always sikre, at tillægget er blevet valideret.hvis du har brug for at vise det indhold, som man ikke kan stole på, du skal bruge, tekst, bindende i stedet for html. i det foregående indlæg, også bemærket, at featuredproduct, er en observerbar, så de underliggende formål skal registreres med en tom funktion opfordrer i stedet for direkte adgang til ejendom med featuredproduct.formattedname.igen, dette er en almindelig fejl for knockout.js begyndere.,,, synlige, er bindende, ligesom de, hvis, og hvis ikke, skibindinger, den synlige bindende lader du vise eller skjule et element, som er baseret på visse betingelser.men i stedet for helt at fjerne den del af den dom, den synlige bindende tilføjer blot et display: ingen erklæring til element er stil attribut.for eksempel kan vi ændre vores eksisterende hvis binding til en synlig bindende:, < td data binder ='visible: discount() > 0 ='color stil: rød > den deraf følgende: for begge, hvis, og det synlige, versioner er vist i det følgende kode stikprøve.dette eksempel antages den betingelse vurderes forkert:, <!- ved hvis bindende: - > < td data binder = ", hvis: discount() > 0 =" stil "farve: rød" > < /td > <!- ved hjælp af synlige bindende: - > < td data binder ='visible: discount() > 0 ='color: rød. - stil: ingen > du reddede < span data binder ='text: formatteddiscount "> < /span >!!!< /td >, når det besluttes at anvende, synlige, og hvis, bestemmes i høj grad af sammenhæng.i dette tilfælde er det faktisk bedre, at anvende den, hvis bindende, så den tomme < td > skaber et lige antal kolonne for hver linje. det bindende tager den samme parameter, som, hvis, og hvis ikke bindinger.det kan være en ejendom i deres viewmodel, en javascript udtryk eller en funktion, der returnerer en boolean -.,,, css, bindende, css, bindende lader du definere css klasser for html elementer baseret på visse betingelser.i stedet for at tage en betingelse som parameter, det tager et objekt, der indeholder css klasse navne som ejendom navne og betingelserne for anvendelse af den klasse, som værdier.dette kan bedst forklares med et eksempel. lad os sige, at du vil tiltrække ekstra opmærksomhed på et produkts rabat, når det er mere end 15% af.en måde at gøre dette på ville være at tilføje en, css, bindende for "red __%" besked inden for < tabel > det viser alle vores vogn poster:, < td data binder = hvis: discount() > 0 ='color stil: rød > du reddede < span data binder ='text: formatteddiscount, css: {supersaver: discount() >. 15) > < /span >!!!< /td > først, vil du se, at det er muligt at tilføje flere bindinger til en enkelt, data, bind, tilskriver ved at adskille dem med kommaer.for det andet, css, bindende tager {supersaver: discount() > 15.} objekt som argument.det er som en kortlægning, der definerer, når en css klasse skal tilføjes til del.i dette tilfælde. supersaver klasse vil blive tilføjet, når produktet er rabat er højere end 15%, og afsættes på anden måde.den faktiske css at definere. supersaver regel kan blive defineret nogen steder i side (dvs. en ekstern eller intern stil plader), supersaver (skriftstørrelse: 1.2em; skrifttype vægt: dristigt.}, hvis du tilføjer en 10% rabat til det andet produkt, bør du se vores css bindende i aktion:,, figur 18:, css, bindende anvendelse af en klasse, når discount() >. 15, den betingelse, der er anført i objektet er ejendom, er den samme som den, hvis, hvis den ikke, og er synlige bindinger "parameter.det kan være en ejendom, et javascript udtryk, eller en funktion,.,,, stil, bindende, stil, bindende, rummer de samme funktioner som, css, bindende, medmindre det manipulerer element er stil attribut i stedet for at tilføje eller fjerne klasser.siden i overensstemmelse med styles, kræver en grundlæggende værdi, par, syntaks for denne bindende er parameter er en smule anderledes, nemlig, du reddede < span data binder ='text: formatteddiscount, stil: {fontweight: discount() >. 15? "fed ":" normale "} '> < /span >!!!hvis produktet er rabat er højere end 15%, knockout.js vil gøre dette element, som er følgende:, < - stil ='color: rød; skrifttype vægt: modig >, men hvis det er mindre end 15%, vil det få, skrifttype vægt af, normal.bemærker, at den stil, bindende, kan anvendes i forbindelse med et element af de eksisterende stil attribut.,,, attr, bindende, attr, bindende lader dig dynamisk definere egenskaber på en html element ved hjælp af viewmodel egenskaber.for eksempel, hvis vores produkt, klasse havde en permalink ejendom, vi kan skabe en forbindelse til de enkelte produkt sider med:, < p > < en data - binde ='attr: {href: featuredproduct(). permalink) > betragtning oplysninger < /a > og lt; /p > det tilføjer en href, tillægger den, < en >, tag at pege på, hvad der er gemt i permalink ejendom.og selvfølgelig, hvis permalink er en observerbar, du kan udnytte alle fordelene af knockout. er "automatiske afhængighed følger.siden permalinks typisk er oplagret med data objekt i vedvarende oplagring (f.eks. en blog indrejse), dynamisk at skabe forbindelser på denne måde, kan være meget belejligt. men den, attr, bindende kan gøre mere end blot at skabe forbindelser.der kan du tilføje en, tillægger en html element.dette åbner op for alle mulige døre for at integrere deres knockout.js modeller med andre dom biblioteker.,, smdrg., denne lektion indført knockout. er "udseende bindinger.mange af disse bindinger ændre en html element, når en særlig betingelse er opfyldt.definitionen af disse betingelser direkte i bindende er intuitiv måde at udforme modeller, og det holder betragtning centriske kode uden for viewmodel. husk, knockout. er "mål er at lade dig fokusere på data bag din ansøgning, som automatisk synkronisere synspunkt, når data ændringer.når du har defineret deres bindinger, du behøver aldrig at bekymre dig om dem igen (medmindre du ændre strukturen af deres viewmodel, naturligvis), fremlægges i denne lektie udseende bindinger, giver alle de værktøjer, de har brug for at udvise deres data, men de lader os ikke tilføje yderligere interaktion med brugeren til vores opfattelse komponenter.i den næste lektion, vil vi se på, hvordan knockout.js forvalter form områder. denne lektion er et kapitel i, knockout - kort, en fri ebook fra holdet på syncfusion.,






Previous:
Next Page: