繁体   English   中英

形成最佳实践(angularjs 1.6)

[英]form best practices (angularjs 1.6)

我已经看到了实现表单及其背后与控制器交互的逻辑的不同方法,我想知道遵循的最佳方法是什么。

例子:

<form name="myForm" ng-submit="submit(user)">
  username: <input name="username" ng-model="user.username">
  age: <input name="age" ng-model="user.age">
</form>

在该示例中,控制器中的submit()方法将有 3 种从表单中提取usernameage的方法:

  • 使用$scope.myForm对象。 该对象还具有与表单验证相关的信息。
  • 使用$scope.user对象。
  • 使用传递给submit()方法的user变量。

所以我的问题是,最佳实践是什么?

让我们来看看这 3 种方法:

  1. $scope.myForm应仅用于表单验证目的。 我通常通过检查$scope.myForm.$invalid来禁用提交按钮。

  2. $scope.user - 它将限制submit函数仅使用此变量并降低其可重用性。 您还有输入更多内容的开销 - $scope部分,对此我很迂腐。

  3. 我更喜欢第三种方法,因为它增加了submit功能的可重用性。

使用传递给 submit(user) 的 user 变量是最好的方法。

不要使用 $scope,而是将所有内容绑定到控制器。 它应该是这样的:

<form name="$ctrl.myForm" ng-submit="$ctrl.submit()">
  username: <input name="username" ng-model="$ctrl.user.username">
  age: <input name="age" ng-model="$ctrl.user.age">
</form>

通过 $ctrl.user 为我提交没有意义,但这更多是风格问题。

PS 对于简单的情况,您不需要控制器中的 Form 对象,但是当事情变得复杂时,您会发现没有它会非常困难。 作为一个实时示例,尝试在某个字段上添加异步验证,这应该在模糊和表单提交时发生(如果对模糊的验证尚未完成)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM