Flutter-将表单绑定到模型

本杰明·巴金斯(Benjamin Baggins)

我使用reactive_forms在颤振是一个模型驱动的形式库,它的灵感来自角反应形式。

添加带有一个名为“ nickName”的formControl的表单非常简单:

  final _form = FormGroup({
    'nickName':
        FormControl<String>(validators: [Validators.required]),
  });

我的问题是,将表单控件“ nickName”绑定到域模型的属性,这不是通常的做法吗?因为这是我在Angular中工作的另一个代码库中完成的工作。

我确实为此表单提供了一个域模型(尽管它的字段多于表单所包含的字段。其余字段在以下页面上的表单中设置-如安装向导):

class UserRegistrationEntity {
  String nickName;
  String email;
  String confirmEmail;
  String password;
  String confirmPassword;
}

我可以像这样创建模型:

final userRegistration = UserRegistrationEntity();

但是,现在如何将的nickName字段绑定userRegistration到表单控件?我希望表单库有一个等效于ngModelfield的字段,以便我在表单控件上设置模型的字段。

还是这不是Flutter要做的事情?

示例:https//angular.io/api/forms/NgModel#using-ngmodel-on-a-standalone-control

费迪南德

从我reactive_forms在in flutter中的使用来看,我没有看到与之等效的东西ngModel这是因为像这样ReactiveTextField元素设计为具有小部件的双重绑定功能(双向绑定)

这就是为什么您不包含像onChangedngModel方法之类的属性的原因#ngOnChanges()

因此,要将userRegistration的nickName字段绑定到表单控件,可以使用ViewModelProvider

因此,您的代码如下所示:

class YourViewModel {
   final _form = FormGroup({
    'nickName':
        FormControl<String>(validators: [Validators.required]),
  });

//assuming you are signing in
void signIn() {
    final credentials = this.form.value;
    //the rest of your signIn code
  }

}
class YourScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final viewModel = Provider.of<YourViewModel>(context, listen: false);
    return ReactiveForm(
      formGroup: viewModel.form,
      child: Column(
        children: <Widget>[
          ReactiveTextField(
            formControlName: 'nickName',
          ),
          ReactiveFormConsumer(
            builder: (context, form, child) {
              return RaisedButton(
                child: Text('Submit'),
                // if the form is valid, sign-in or whatever you need to do with the form data (I have used signIn)
                onPressed: form.valid ? viewModel.signIn : null,
              );
            },
          ),
        ],
      ),
    );
  }
}

结论

ngModel是绑定输入的指令,Reactive Forms会这样做,并保持视图和模型之间的分隔,同时仍保持数据同步。还有就是,因此NO将数据绑定到域层明显需要,而不是reactive_forms消除了需要做的全部,因为过程是内置的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将表单发布到mvc操作方法时,列表未绑定到模型

来自分类Dev

绑定到表单时的主干模型状态

来自分类Dev

引导表单如何绑定到Rails模型?

来自分类Dev

将模型绑定到列表嵌套模型

来自分类Dev

Angular:将两个表单控件绑定到同一个模型

来自分类Dev

Flutter Stack Widget:将图层的大小绑定到基础图层的大小

来自分类Dev

将多个对象绑定到Rails表单

来自分类Dev

将多个对象绑定到Rails表单

来自分类Dev

无法将模型绑定到集合

来自分类Dev

将模型绑定到ViewModel(WPF)

来自分类Dev

将模态数据绑定到模型

来自分类Dev

使用集合将模型绑定到对象

来自分类Dev

将模型名称绑定到所选

来自分类Dev

AngularJS将模型绑定到ngRepeat(并评估)

来自分类Dev

将数组绑定到指令中的模型

来自分类Dev

AngularJS将类属性绑定到模型

来自分类Dev

无法将selectlistitem绑定到模型属性

来自分类Dev

无法将模型属性绑定到SelectListItem

来自分类Dev

将Select选项绑定到AngularJS模型

来自分类Dev

从指令将数组绑定到模型

来自分类Dev

将媒体元素绑定到视图模型

来自分类Dev

Flutter有条件地渲染2个表单-将表单值复制到另一个表单

来自分类Dev

Laravel:表单模型绑定到带有选项的输入

来自分类Dev

表单不会根据POST请求绑定到模型

来自分类Dev

Xamarin表单中的视图到不同视图模型的绑定

来自分类Dev

Laravel:表单模型绑定到带有选项的输入

来自分类Dev

如何将 list<object> 绑定到模型并与其他表单数据一起提交?

来自分类Dev

从Flutter将数据发布到API

来自分类Dev

找到未从响应正文(表单数据)绑定到模型 MVC、默认模型绑定器的属性

Related 相关文章

热门标签

归档