验证输入由嵌套指令处理

时间:2014-04-05 15:16:51

标签: angularjs validation angularjs-directive

基本上我想在父指令中显示ngModel的验证消息,但输入是在嵌套指令内处理的。

到目前为止,验证没有传播,到目前为止我能找到的唯一方法是从嵌套指令中查看$ valid和$ error变量,并找到将其传播给父级的方法。

我遇到了require: "^ngModel"但是根据我的上一次尝试,它并没有将验证提交给父范围。

想知道是否有办法这样做,除了黑客试图观察$ error并支持它?

修改: 以下是codepen演示我的问题:http://codepen.io/anon/pen/GJygp

在代码笔中,我有2个指令:parent-directive和child-directive。验证在child-directive内处理,但我想在parent-directive处显示验证消息。

1 个答案:

答案 0 :(得分:2)

对于这类内容, form/ngForm directive 非常有用 它实例化 FormController ,并允许您访问每个输入或选择子元素(带有ngModel和名称)。我强烈建议仔细查看相关文档(上面链接)。

除其他外,您可以访问任何子元素的有效性状态(按名称引用),如下所示:

<!-- Creates a `parentForm` property in the current scope -->
<!-- that will give access to child control-elements      -->
<div ng-form name="parentForm">
    <!-- Creates a child control-element, whose properties  -->
    <!-- will be accessible under `parentForm.childControl` -->
    <input type="text" name="childControl" ng-model="someModel" />

    <!-- Uses the various properties of the child control-element          -->
    <!-- available to the parent from-element (through the FormController) -->
    <div>
        Child control-element info:<br />
        pristine: {{parentForm.childControl.$pristine}}<br />
        dirty:    {{parentForm.childControl.$dirty}}   <br />
        valid:    {{parentForm.childControl.$valid}}   <br />
        invalid:  {{parentForm.childControl.$invalid}} <br />
    </div>
</div>

另请参阅基于原始代码集的 short demo