Javascript Angularjs使用指令和$setValidity来验证一组动态下拉列表,无法获取要显示的错误消息
我正在处理一段代码,该代码生成多个带有ng repeat的下拉列表,然后验证该下拉列表,以便所选值不能相同。到目前为止,我已经成功地使用ngModelCtrl-insidelink函数设置了有效性,但是我无法显示错误消息。这是密码 HTML:Javascript Angularjs使用指令和$setValidity来验证一组动态下拉列表,无法获取要显示的错误消息,javascript,angularjs,validation,ng-repeat,Javascript,Angularjs,Validation,Ng Repeat,我正在处理一段代码,该代码生成多个带有ng repeat的下拉列表,然后验证该下拉列表,以便所选值不能相同。到目前为止,我已经成功地使用ngModelCtrl-insidelink函数设置了有效性,但是我无法显示错误消息。这是密码 HTML: 对此已经有一段时间了,非常感谢您提供的任何帮助如果您能够创建一个工作演示,这将是一件非常棒的事情,有人能够提供更好的帮助。与ng模型表单字段关联的NgModelController不是作为周围表单元素FormController的属性而不是作用域的属性公开
对此已经有一段时间了,非常感谢您提供的任何帮助如果您能够创建一个工作演示,这将是一件非常棒的事情,有人能够提供更好的帮助。与ng模型表单字段关联的NgModelController不是作为周围表单元素FormController的属性而不是作用域的属性公开吗?这里不应该是ng show=“attributes[key]。$error.dupTags”be ng show=“whateverYouNamedYourForm.attributes[key]。$error.dupTags”您好@IAmDranged是的,这是我粘贴代码时犯的一个错误,我会将其更改为FORMNAME.attributes[key]。$error.dupTags,但即使包含FORMNAME,错误消息没有显示Hello@Manish,我会看看是否可以在plunker中创建一些东西,感谢您的建议,如果您能够创建一个工作演示,这将是一件非常棒的事情,有人能够提供更好的帮助。与ng模型表单字段关联的NgModelController不是作为周围表单元素FormController的属性而不是作用域的属性公开吗?这里不应该是ng show=“attributes[key]。$error.dupTags”be ng show=“whateverYouNamedYourForm.attributes[key]。$error.dupTags”您好@IAmDranged是的,这是我粘贴代码时犯的一个错误,我会将其更改为FORMNAME.attributes[key]。$error.dupTags,但即使包含FORMNAME,错误消息没有显示Hello@Manish,我会看看是否可以在plunker中创建一些东西,谢谢你的建议
<fieldset ng-show="!item.periodic">
<div class="form-group" ng-repeat="(key,value) in tags_limit track by $index">
<label class="col-md-3 control-label" for="attributes[{{key+1}}]">val {{key+1}}</label>
<div class="col-md-7">
<select class="form-control attribute" name="attributes[{{key}}]" id="attributes[{{key+1}}]"
ng-options="attribute.id as attribute.name for attribute in documentAttributes | orderBy: 'name'"
ng-model="item.attributes[key]" unique-group>
<option value="">None</option>
</select>
</div>
<small class="help-block" ng-show="FORMNAME.attributes[key].$error.dupTags">Please change tag, tags can not repeat</small>
</div>
</fieldset>
angular.module('indeksApp')
.directive('uniqueGroup', function () {
return {
restrict: 'A',
scope:false,
require: 'ngModel',
link: function (scope, element, attrs,ngModelCtrl) {
scope.$watch(attrs.ngModel,function(value){
var tempArray=[];
_.forEach(scope.$parent.item.attributes,function(val,key){
if (val === value)tempArray.push('key')
});
if(tempArray.length >1){
// is invalid
ngModelCtrl.$setValidity('dupTags',false)
}else{
// is valid
ngModelCtrl.$setValidity('dupTags',true)
}
});
}
};
});