AngularJSdynamic表单字段validation

我想validation从后端端点给我的一些表单域…

所以基本上, input元素是在ng-repeat内dynamic创build的。 因此, input属性也是dynamic添加的,例如typename等等。

但是,因为name属性是dynamic添加的,所以当我尝试validation它时,像这样,例如:

 myForm.elName.$valid 

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

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

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

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 )的input元素调用FormController.$addControl来注册自己,并在FormController上公开一个属性为{{ field.name }} 的inputname属性 。 因此,即使控件已注册,但是您没有在具有指定email FormController上显示属性firstName ,您只有{{ field.name }}引用上一个input项

解决scheme的解释:

在这个解决scheme中,我创build了一个自定义指令,以便在运行时用正确的名称replace{{ field.name }}

有关更多信息,为什么我必须使用terminal:true,priority:1000 ,请查看此讨论: 在AngularJS中添加指令