我正在使用角度指令中的验证而没有成功。
当我将name属性提交到指令模板时,form.name。$ error对象似乎未定义。如果我在模板中使用固定的name-attribute,则$ error对象很好,但当然所有元素都相同。
html是:
<form name="form" novalidate>
<p>
<testvalidation2 name="field1" form="form" field="testfield4" required="true">
</testvalidation2>
</p>
</form>
该指令如下所示:
app.directive('testvalidation2', function(){
return {
restrict: 'E',
scope: {
ngModel: '=',
newfield: '=field',
required: '=required',
form: '='
},
templateUrl: 'template2.html',
link: function(scope, element, attr){
scope.pattern = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/;
scope.name = attr.name;
}
} //返回 });`
最后是模板:
<div>
<input name="{{name}}" type="text" ng-model="newfield" ng-required="required" ng-pattern="pattern"> {{FIELD}}</input>
<span ng-show="form.name.$error.required">Required</span>
<span ng-show="form.name.$error.pattern"> Invalid </span>
<p>Output {{form.name.$error | json}}</p>
</div>
我为Angular Validation Problem创建了一个plunker 如果有人能帮助我赢得这场战斗,我会很高兴。
迈克尔
答案 0 :(得分:1)
我没有解决这个问题,但我可以告诉你问题是什么。
form="form"
应该有form="form2"
形式的名称。input
控件不会被添加到父范围form2
。目前我能想到的唯一出路是不使用隔离范围。