2014-12-05 50 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