Archived
generated from mitchell/rust_template
minor fixes
This commit is contained in:
+8
-5
@@ -231,7 +231,7 @@ impl<FD: FormData, FS: FormStyle> FormBuilder<FD, FS> {
|
||||
let fd = builder.fd.clone();
|
||||
let value_setter = move |value| {
|
||||
// TODO: also do this on a submit somehow
|
||||
let parsed = match parse_fn(&value) {
|
||||
let parsed = match parse_fn(value) {
|
||||
Ok(p) => p,
|
||||
Err(e) => {
|
||||
validation_signal_set.set(Err(e));
|
||||
@@ -242,14 +242,17 @@ impl<FD: FormData, FS: FormStyle> FormBuilder<FD, FS> {
|
||||
// parse succeeded, update value and validate
|
||||
let field_fn = field_fn.clone(); // move
|
||||
let validation_fn = validation_fn.clone(); // move
|
||||
|
||||
// TODO: change this to a get then set, so that if the validation fails,
|
||||
// The value is not actually updated
|
||||
fd.update(move |fd| {
|
||||
let field = field_fn(fd);
|
||||
*field = parsed;
|
||||
|
||||
validation_fn
|
||||
.as_ref()
|
||||
.and_then(|vfn| vfn(fd).err())
|
||||
.map(|e| validation_signal_set.set(Err(e)));
|
||||
if let Some(ref validation_fn) = validation_fn {
|
||||
let validation_result = (validation_fn)(fd);
|
||||
validation_signal_set.set(validation_result);
|
||||
}
|
||||
});
|
||||
};
|
||||
let value_setter = Box::new(value_setter);
|
||||
|
||||
Reference in New Issue
Block a user