ped*_*rte 15 javascript angularjs
我正在尝试验证从后端端点给我的一些表单字段...
所以基本上这些input元素是在a里面动态创建的ng-repeat.因此,input属性也被动态添加,如type,name等...
但是因为name属性是动态添加的,所以当我尝试验证它时,例如:
myForm.elName.$valid
Run Code Online (Sandbox Code Playgroud)
它没有返回任何东西,因为在这一点上,它不知道是什么elName.
我创建了一个jsFiddle来演示这个问题:http: //jsfiddle.net/peduarte/HB7LU/1889/
任何帮助或建议将不胜感激!
FANX.
编辑:
我一直在提到这个AWESOME文档:http://docs.angularjs.org/api/ng.directive:
input.email
Kha*_* TO 36
试试我的自定义指令:
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);
}
};
});
Run Code Online (Sandbox Code Playgroud)
用它:
<input dynamic-name="field.name"
type="{{ field.type }}"
placeholder="{{ field.name }}"
ng-model="field.value"
required>
Run Code Online (Sandbox Code Playgroud)
问题解释:
缺省情况下,使用ngModelController输入元件(ng-model)调用FormController.$addControl时它们与注册其自身,并在暴露的属性FormController与输入的名称属性是{{ field.name }}在这种情况下.因此,即使控制已注册,但你没有暴露在性能FormController与命名的email,firstName你只需要{{ field.name }}引用的最后一个输入项
解决方案的解释:
在此解决方案中,我创建了一个自定义指令,以{{ field.name }}在运行时替换正确的名称.
为什么我要使用更多的信息terminal:true,和priority:1000,看看这个讨论:从指令添加指令在AngularJS
| 归档时间: |
|
| 查看次数: |
18998 次 |
| 最近记录: |