kontrol

, kontrol med strøm bindende,,,,, 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 koncist. knockout observablesappearance bindinger, som vi har set i de tidligere erfaringer, at designe en baggrund for en viewmodel er som at skabe en html model for en javascript objekt.en integreret del af alle blive system er evnen til at styre strømmen af skabelon henrettelse.evnen til at sløjfe med lister over data og omfatte eller udelukke visuelle elementer baseret på visse betingelser gør det muligt at minimere avance og giver dig fuldstændig kontrol over, hvordan deres data vises.,,, vi allerede har set, hvordan, de bindende kan loop gennem en observerbar system, men knockout.js omfatter også to logiske bindinger: hvis, og hvis den ikke.desuden er den med bindende lader dig manuelt, ændre anvendelsesområdet for model blokke. denne lektion indfører knockout. er kontrollen flow bindinger ved at udvide indkøbsvogn eksempel fra den forrige lektion.We’ll also explore some of the nuances of ,foreach, that were glossed over in the last lesson., ,The ,foreach, Binding,Let’s start by taking a closer look at our existing ,foreach, loop:, <tbody data-bind='foreach: shoppingCart'> <tr> <td data-bind='text: name'></td> <td data-bind='text: price'></td> <td><button data-bind='click: $root.removeProduct'>Remove</button></td> </tr> </tbody>,When Knockout.js encounters ,foreach, in the ,data-bind, attribute, it iterates through the shoppingCart array and uses each item it finds for the ,binding context, of the contained markup. denne sammenhæng er, hvordan knockout.js forvalter omfanget af loops.i dette tilfælde er det grunden til, at vi kan bruge navn og pris egenskaber, uden at nævne et tilfælde af produkt.,, der arbejder med bindende sammenhænge, ved hjælp af hvert punkt på dagsordenen i et system som det nye bindende sammenhæng er en bekvem måde at skabe sløjfer, men denne adfærd gør det også umuligt at henvise til formål uden for den aktuelle punkt på følelser.af denne grund, knockout.js gør flere særlige egenskaber, der er til rådighed i hver bindende sammenhæng.bemærker, at alle disse egenskaber er kun til rådighed i udsigt, ikke viewmodel.,, $rod, ejendom, $grundlæggende sammenhæng henviser altid til den øverste viewmodel, uanset løkker eller andre ændringer i anvendelsesområdet.som vi har set i de tidligere lektion, der gør det muligt at få adgang til på metoder til at manipulere viewmodel.,, $data, ejendom, $data, ejendomsret til en bindende sammenhæng henviser til viewmodel genstand for den aktuelle situation.det er ligesom den her, nøgleord i en javascript objekt.for eksempel, i vores hver: shoppingcart loop, $data henviser til den nuværende liste punkt på dagsordenen.som følge heraf følgende kode virker, præcis som de vil, uden at bruge $data:, < td data binder ='text: $data. navn > < /td > < td data binder ='text: $data. pris > < ///////td > dette kan synes som et trivielt ejendom, men det er uundværligt, når du er iterating gennem arrays, der indeholder atom - værdier som snore eller numre.vi kan f.eks. indeholde en liste over krav, der repræsenterer et for hvert produkt:, funktion vare (navn, pris, tags) (this.name = ko. observerbare (navn); this.price = ko. observerbare (priser); tags = type (tags).= = "usynlig"?plader: [...], this.tags = ko. observablearray (tags)}, definere nogle brikker til et af de produkter i, shoppingcart, system:, nyt produkt ("røv", 1.49, ['baked varer "," hot dogs']), og nu kan vi se de $data sammenhæng i aktion.på < tabel > indeholder vores vogn, tilføje en < td > element, der indeholder en < ul > liste iterating gennem, mærkater, system:, < tbody data binder ='foreach: shoppingcart "> < tr > < td data binder ='text: navn > < /td > < td data binder ='text: pris > < /td > < td > <!- endnu en liste over hundetegn.- > < ul data binder ='foreach: hundetegn "> < li data binder ='text: $data '> < /li > < /ul > < /td > < td > < knap data binder ='click: $rod. removeproduct" > fjerne < /knap > < /td > < /tr > < /tbody > < /tabel > i det, de: hundetegn, loop, knockout.js anvender lokalt styret "bagværk" og "hot dogs" som bindende sammenhæng.men vi ønsker at få adgang til de faktiske betingelser i stedet for deres egenskaber, har vi brug for $data objekt.,, $indeks, ejendom, inde i en, for hvert, loop, $indeks, ejendom, indeholder det nuværende punkt er indekset i nettet.som de fleste i knockout.js, den værdi af $indeks vil opdatere automatisk, når du tilføje eller slette et punkt fra den tilknyttede observerede system.det er en nyttig egenskab, hvis du har brug for at vise det indeks for hvert punkt på dagsordenen, som så:, < td data binder ='text: $indeks > < /td >, $forælder, ejendom, $forælder, ejendom, henviser til den forælder, viewmodel objekt.typisk, at du kun har brug for det, når du arbejder med indlejrede løkker, og du har brug for at få adgang til egenskaber i den ydre ring.for eksempel, hvis du har brug for at få adgang til, produkt, f.eks. fra indersiden af hver: et loop, du kunne bruge $forælder ejendom:, < ul data binder = "for hver enkelt: hundetegn" > < li > < span data binder = "tekst: $forælder. navn" > < /span > - < span data binder = "tekst: $data" > < /span > < /li > < /ul > mellem observerede arrays,, de bindende og bindende sammenhæng egenskaber drøftet tidligere, skulle du have alle de værktøjer, de har brug for for at mobilisere arrays i din knockout.js web ansøgninger.,, diskonteret produkter, før vi går videre til den betingede bindinger, er vi nødt til at tilføje en, rabat, ejendomsret til vores produkt klasse:, funktion vare (navn, pris, mærkater, rabat) {...rabat = type (kalkulationsrente).= = "usynlig"?nedslag: 0; this.discount = ko. observerbare (kalkulationsrente); this.formatteddiscount = ko. beregnet (function() {afkast (. discount() * 100) + "%"), og denne)}, giver det os en tilstand, vi kan kontrollere, med knockout. er logisk bindinger.først laver vi den rabat, parameter frivilligt, giver det en standardværdi på 0.så skaber vi en observerbar til rabat, så knockout.js kan spore dets ændringer.endelig er vi definere en beregnet observerbare, der returnerer en brugervenlig udgave af rabat procentdel., lad os gå videre og tilføje en 20% rabat i forhold til det første punkt i, personviewmodel. shoppingcart:, this.shoppingcart = ko. observablearray ([nyt produkt ("øl", 10.99, nul,. 20), nyt produkt ("møgunge" 7,99), nyt produkt ("røv", 1.49, ['baked varer "," hot dogs']);]);,,, hvis, og hvis ikke, skibindinger, hvis bindende er bindende, betinget.hvis den parameter, du passerer vurderes korrekt, indeholdt html vises, ellers er det fjernes fra dom.f.eks. forsøger at tilføje følgende celle på < tabel > indeholder indkøbsvogn poster, lige før "fjerne" knappen. < td data binder = hvis: discount() > 0 ='color stil: rød > du reddede < span data binder ='text: formatteddiscount "> < /span >!!!< /td >, alt indenfor de, < td > element vil kun anføres for produkter, der har en rabat er større end 0.plus, da rabat er en observerbar, knockout.js automatisk vil revurdere den betingelse, når den ændrer sig.det er bare endnu en måde, knockout.js hjælper med at fokusere på de data, at køre i din ansøgning.,, fig. 15: på visse betingelser, således at en rabat for hvert produkt, du kan bruge, noget, javascript udtryk som betingelse: knockout.js vil forsøge at vurdere den snor som javascript kode og anvende resultat eller skjule element.som du måske har gættet, den, hvis den ikke bindende simpelthen ophæver udtryk.,,, med bindende, med bindende kan anvendes til manuelt at erklære, er omfattet af en særlig blok.prøv at tilføje følgende snippet i toppen af din mening, før "kasse" og "læg øl" knapper:, < p = med featuredproduct ": data binder > har du brug for < stærk data binder ='text: navn > < /stærk >?< br /> få en nu kun < stærk data binder ='text: pris > < /stærk >.< /p > i den med, blok, knockout.js anvendelser, personviewmodel.featuredproduct som bindende sammenhæng.- teksten: navn og tekst: pris bindinger fungerer som forventet, uden en henvisning til deres oprindelige formål. naturligvis for den foregående html arbejde, bliver du nødt til at definere, featuredproduct, ejendom på personviewmodel:, var indeholdt = nyt produkt ("acme grill sauce", 4); this.featuredproduct = ko. observerbare (var);,, sammendrag, vi forelagde, hver, hvis, som, hvis den ikke, og bindinger.disse kontrol flow bindinger, give dem fuld kontrol over, hvordan din viewmodel vises i en betragtning. det er vigtigt at indse, at forholdet mellem knockout. er "bindinger og observerbare fænomener.teknisk set, er fuldstændig uafhængig.som vi så i begyndelsen af denne serie, kan du bruge en normal genstand med indfødte javascript egenskaber (dvs. ikke, observerbare fænomener) som din viewmodel, og knockout.js vil gøre udsigten er bindinger korrekt.men knockout.js vil kun behandle den model, den første gang uden observerbare fænomener, kan det ikke automatisk ajourføring den opfattelse, når de underliggende data ændringer.- det er hele pointen med knockout.js, du vil typisk se bindinger henviser til, observerbare egenskaber, som vores, de: shoppingcart, bindende i den foregående eksempler. nu kan vi kontrollere logikken bag vores opfattelse skabeloner, kan vi gå videre til kontrol med forekomsten af individuelle html elementer.den næste lektion er til den sjove del af knockout.js: udseende bindinger, denne lektion er et kapitel i, knockout - kort, en fri ebook fra holdet på syncfusion.,




Previous:
Next Page: