Angularjs 角度形式验证自定义指令,如何将结果传递给另一个元素以显示错误?

Angularjs 角度形式验证自定义指令,如何将结果传递给另一个元素以显示错误?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,所以,基本上我正在为自己构建一个新的表单验证指令,除了一件我认为没有正确编码的事情之外,我让它工作得很好。如您所知,使用指令进行表单验证是为了验证如何将指令中出现的错误文本传递给另一个元素(引导{validation\u errors[“input1”]}就在我输入的正下方?目前,我创建了一个作用域变量,它存在于我的控制器中,并且确实有效…直到用户忘记创建该实际变量…那么我应该如何将一个元素的信息共享给另一个元素?顺便说一句,我的变量是一个包含所有输入错误消息的数组…下面是我现在的代码是: &l

所以,基本上我正在为自己构建一个新的表单验证指令,除了一件我认为没有正确编码的事情之外,我让它工作得很好。如您所知,使用指令进行表单验证是为了验证
如何将指令中出现的错误文本传递给另一个元素(引导
{validation\u errors[“input1”]}
就在我输入的正下方?目前,我创建了一个作用域变量,它存在于我的控制器中,并且确实有效…直到用户忘记创建该实际变量…那么我应该如何将一个元素的信息共享给另一个元素?顺便说一句,我的变量是一个包含所有输入错误消息的数组…下面是我现在的代码是:

<!-- html form -->
<input type="text" class="form-control" name="input1" ng-model="form1.input1" ngx-validation="alpha|min_len:3|required" />
<span class="validation text-danger">{{ validation_errors["input1"] }}</span>
如果查看我的代码,我使用的范围变量称为
$scope.validation\u errors=[];
这是在控制器中创建的,如果不创建它,它当然会失败。您也可以看到我的github,我提供了它,并且希望很多人可以使用我的Angle Validation指令,因为它与我的方式非常简单:)看到我的

编辑 只是想说明一下,我的指令的验证部分工作正常。我真正的问题很简单,我如何从指令(该指令连接到
)传递错误消息,并将该错误消息(一个简单字符串)传递到
它们是两个不同的元素,我如何与指令中的另一个元素对话,我如何绑定?目前我正在使用一个全局变量,它需要存在于控制器中,这不好。。。我是Angular的新手,我正在努力处理指令,所以请提供代码。非常感谢你的帮助。

回答
所以为了得到一个完整的角度指令,解决方案的最后一段代码得到了回答。。。因为显示我的错误消息的
总是在我输入之后,我可以简单地用原生Angular jqLite更新下一个元素文本…就是这样,就这么简单。。。这是我的新HTML代码


您应该执行与所有其他内置表单验证指令相同的操作:使用ngModelController的$setValidity方法,使用您自己的密钥。然后,您的span将能够使用检查验证密钥是否存在错误

theFormName.theInputName.$error.yourValidationKey
字段的有效性以及封闭表单的有效性将由angular自动处理


请参阅。

eee什么?对不起,我是个新手,我似乎不明白你的意思。能不能告诉我我的代码中需要修改什么。请注意,我想将我的指令保留为可重用的,因此
的FORMNAME.
似乎不适合重用。顺便说一句,我不知道您是否看到了,但我有多个验证过滤器,我在1个指令
ngx validation=“alpha | min|len:3 | required”
下通过,您可以在我的示例中看到3个已通过。。。我想坚持对同一输入进行所有验证的1次调用,这是一个与我发现的所有其他调用完全不同的概念,但这种方法要简单得多!您不应该执行
scope.validation\u errors[ctrl.$name]=message
,而应该执行
ctrl.$setvalidation('ngxValidation',false)
。关键(ngxValidation)由您决定。这将使该字段无效,这将导致angular向该字段添加css类以指示该字段,还将导致封闭表单无效。我链接到的文档解释得很好。谢谢你的帮助,JB,但不幸的是,你似乎误解了我的问题。指令的验证部分工作正常,问题是只需将指令内部的错误消息传递到专门用于错误显示的
。现在我正在使用一个全局范围变量,这不好。你不应该传递错误消息。指令应仅根据一条规则(或多条规则)将字段设置为有效或无效,并根据字段上存在的错误键,让span显示相应的错误消息。就像我链接到的示例一样,我发现的另一个选项是在我的指令中使用JS或jQuery。因此,我在输入中添加了另一个属性,比如说
,并将该id指定给我的错误
,并在指令中使用innerHTML更新错误消息……但在Angular中这样做是可以的,可能不是吗?
<!-- HTML -->
<input type="text" name="input1" validation="alpha|min_len:3|required" />
<span class="validation text-danger"></span>
// Previous piece of code to replace
if(!isFieldValid && ctrl.$dirty) {
    scope.validation_errors[ctrl.$name] = message;
}

// REPLACED by this
if(!isFieldValid && ctrl.$dirty) {
    elm.next().text(message);
}
theFormName.theInputName.$error.yourValidationKey