Formaterare och parser - anpassad
För en djupare förståelse om hur data flödar från inmatningsfält till modell-värde till vy-värde presenterar vi flödesscheman.
Utan parser och formaterare
graph LR
FTextField["`**FTextField**
"AbcD"`"]
validerar?{"`**Validerar?**
"AbcD"`"}
trim["trim()"]
modelValue[("`**modelValue**
"AbcD"`")]
FTextField -. "Ändrar värde\n(blur)" .-> validerar?
validerar? -- Ja --> trim
validerar? -- Nej --> modelValue
trim --> modelValue
Formaterare utan parser
I detta exempel använder vi en fiktiv formaterare som ändrar skiftläge till gemener.
function myFormatter(value: string): string {
return value.toLowerCase();
}
graph LR
FTextField["`**FTextField**
"AbcD"`"]
validerar?{"`**Validerar?**
"AbcD"`"}
modelValue[("`**modelValue**
"abcd"`")]
viewValue[("`**viewValue**
"abcd"`")]
pformatter["formatter()"]
ptrim["trim()"]
stringify["String()"]
FTextField -. "Ändrar värde\n(blur)" .-> validerar?
validerar? -- Ja --> ptrim
validerar? -- Nej --> modelValue
ptrim --> pformatter
pformatter --> modelValue
modelValue -. watcher .-> stringify
stringify -. Uppdaterar .-> viewValue
Parser utan formaterare
I detta exempel använder vi en fiktiv parser som ändrar skiftläge till versaler.
function myParser(value: string): string {
return value.toUpperCase();
}
<f-text-field
+ :parser="myParser"
></f-text-field>
graph LR
FTextField["`**FTextField**
"AbcD"`"]
validerar?{"`**Validerar?**
"AbcD"`"}
modelValue[("`**modelValue**
"ABCD"`")]
pparser["parser()"]
ptrim["trim()"]
FTextField -. "Ändrar värde\n(blur)" .-> validerar?
validerar? -- Ja --> ptrim
ptrim --> pparser
validerar? -- Nej --> modelValue
pparser --> modelValue
Eftersom ingen formaterare finns uppdateras inte vy-värdet.
Formaterare och parser
I detta exempel kombinerar vi formateraren och parsern från tidigare flöden.
graph LR
FTextField["`**FTextField**
"AbcD"`"]
modelValue[("`**modelValue**
"ABCD"`")]
viewValue[("`**viewValue**
"abcd"`")]
validerar?{"`**Validerar?**
"AbcD"`"}
pparser["parser()"]
ptrim["trim()"]
wformatter["formatter()"]
stringify["String()"]
FTextField -. "Ändrar värde\n(blur)" .-> validerar?
validerar? -- Ja --> ptrim
ptrim --> pparser
validerar? -- Nej --> modelValue
pparser --> modelValue
modelValue -. watcher .-> wformatter
wformatter --> stringify
stringify -. Uppdaterar .-> viewValue
Programmatisk uppdatering av model-värde
Vid programmatisk uppdatering av model-värde uppdateras vy-värde automatiskt. Vy-värdet formateras om en formaterare är angiven. Om även en parser är angiven utöver formaterare så parsas värdet innan det formateras. Misslyckas parsning eller formatering på vägen så sätts vy-värdet till model-värdet.
graph LR
modelValue[("`**modelValue**
"AbcD"`")]
viewValue[("`**viewValue**
"abcd"`")]
stringify["String()"]
wparser["parser()"]
wformatter["formatter()"]
modelValue -. watcher .-> wparser
wparser --> wformatter
wformatter --> stringify
stringify -. Uppdaterar .-> viewValue