javascript – AngularJS动态表单域验证

我试图验证从后端端点给我的一些表单字段

因此,基本上,输入元素是在ng重复内部动态创建的。
因此,输入属性也是动态添加的,如类型,名称等…

但是,由于name属性是动态添加的,当我尝试验证它时,例如:

myForm.elName.$valid

它不返回任何东西,因为在这一点上,它不知道什么是elName。

我创建了一个jsFiddle来演示这个问题:
http://jsfiddle.net/peduarte/HB7LU/1889/

任何帮助或建议将不胜感激!

FANX。

编辑:
我一直在提到这个AWESOME文档:
http://docs.angularjs.org/api/ng.directive:input.email

尝试我的自定义指令:

myApp.directive("dynamicName",function($compile){
  return {
      restrict:"A",
      terminal:true,
      priority:1000,
      link:function(scope,element,attrs){
          element.attr('name', scope.$eval(attrs.dynamicName));
          element.removeAttr("dynamic-name");
          $compile(element)(scope);
      }
   };
});

用它:

<input dynamic-name="field.name"
       type="{{ field.type }}"
       placeholder="{{ field.name }}"
       ng-model="field.value"
       required>

DEMO

问题解释:

默认情况下,使用ngModelController(ng-model)的输入元素调用FormController。$ addControl,当它们被链接以注册自身,并在FormController中显示一个属性名称属性为{{field.name}}在这种情况下。因此,即使控件已注册,但您没有在具有命名电子邮件(FirstName)的FormController上显示属性,则只有{{field.name}}引用最后一个输入项

解决方案说明:

在此解决方案中,我创建了一个自定义指令,以在运行时使用正确的名称替换{{field.name}}。

更多信息为什么我必须使用终端:true,并且优先级:1000,请查看这个讨论:Add directives from directive in AngularJS

翻译自:https://stackoverflow.com/questions/21455695/angularjs-dynamic-form-field-validation

转载注明原文:javascript – AngularJS动态表单域验证