自动更新AngularJS中未触摸的字段?

时间:2013-07-26 08:02:55

标签: angularjs

我正在使用angularjs中的表单验证,但我遇到了与此Google网上论坛帖子相同的问题:https://groups.google.com/forum/#!msg/angular/W1Yya5TfIWo/7jZbfL-wROUJ,空表单会在用户输入值之前“大喊”。

要解决此问题,我只会在字段为$dirty(用户已触摸)时显示错误消息。但是,如果用户直接提交表单而没有触及任何内容,则表单将不会被提交(因为它不是$valid),但它也不会显示任何错误消息(因为字段不是$dirty })。

然后在先前关联的Google网上论坛帖子中建议“触摸”无效表单提交上的字段。我这样做的方式如下:

$scope._updateUntouchedFields = function(form) {
  for(var f in form) {
    var field = form[f];

    if (field.$addControl !== undefined) {
      // $addControl exists, this is a nested form
      // recursively update fields in that form
      $scope._updateUntouchedFields(field);
    } else if (field.$setViewValue !== undefined) {
      // $setViewValue exists, this is a field, just
      // set the view value to the current view value
      if(field.$dirty) continue;
      field.$setViewValue(field.$viewValue);
    }
  }
};

如果表单在提交时无效,则上述函数为callid。我有两个问题:

  1. 我如何确定当前表单控件是否是嵌套表单看起来有点像黑客。是否有更好,更有角度的方式?理想情况下,我想要一个所有表单控件的列表,无论它们是否嵌套在其他形式中。
  2. 这可以自动完成吗?有没有办法覆盖form指令,或者可能在<form>标签中添加一个指令,我可以将这个功能放在哪里?就像现在一样,我需要在每个有表单的控制器中都有它,并将逻辑添加到提交函数。

0 个答案:

没有答案