2014-12-05 52 views
2

我在页面的左侧导航栏中显示验证符号以指示表单是否有效。当我最初加载页面的时候,表单的$ valid属性被设置为true,然后最终它变成false(因为它应该被提供检索的输入数据)。结果是我的验证符号从有效到无效闪烁。有什么办法可以防止这种情况发生?目前,验证符号绑定到$ scope上的一个有效属性,该范围在手表中设置。是否有任何逻辑可以添加到手表来检查表单是否未完成初始化或验证?谢谢!

这是我目前的手表代码。在两个不同的观看周期后,有效属性从未定义变为真。

$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

我认为这个问题是$手表功能。您第一次将“section.valid”设置为undefined。您不需要手动观看。每个表单指令创建一个FormController的实例。因此,您可以直接在视图中检查表单有效性。

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

我也尝试过使用sectionForm。$ valid和$ invalid,因为在上面的代码中没有使用手表。它有相同的结果。 – jsparks 2014-12-08 14:40:42