在验证完成之前,AngularJS将$ valid设置为true

时间:2014-12-05 19:55:40

标签: javascript angularjs validation

我在页面的左侧导航栏中显示验证符号,以指示表单是否有效。当我最初加载页面时,表单的$ valid属性设置为true,然后最终变为false(因为它应该被赋予检索的输入数据)。结果是我的验证符号从有效变为无效。有什么方法可以防止这种情况吗?目前,验证符号与$ scope上的有效属性相关联,该属性在watch中设置。是否有任何逻辑可以添加到手表中以检查表单是否尚未完成初始化或验证?谢谢!

这是我目前的手表代码。在几次不同的监视周期后,有效属性从undefined变为true。

$scope.$watch( 'sections.' + section.sectionName + '.sectionForm.$valid', function( valid ) {
    section.valid = valid;
}, true);

用于显示验证符号的HTML:

<span ng-class="{ 'fa fa-check': section.valid,
    'fa fa-warning': !section.valid}">
</span>

1 个答案:

答案 0 :(得分:1)

我认为问题是$ watch功能。第一次设置&#34; section.valid&#34;如未定义。您不需要手动观看。每个表单指令都创建一个FormController的实例。因此,您可以直接在视图中检查表单有效性。

<span ng-class="{'fa fa-check': sectionFormName.$valid, 'fa fa-warning': sectionFormName.$invalid}"></span>