2014-11-24 45 views
0

我:爲什麼ng-show根據表達式不顯示或隱藏我的元素?

<span class="inlineBlock fa fa-question-circle" 
     ng-show="!(validateEmail(ahs.forms.modal.modalUserEmail)=='OK')" 
     title="{{ validateEmail(ahs.forms.modal.modalUserEmail) }}">{{ validateEmail(ahs.forms.modal.modalUserEmail) }}</span> 

validateEmail的值設定如下:

$scope.validateEmail = function (error) { 
     if (error.$error) { 
      if (error.$error.required) return "Required"; 
      if (error.$error.email) return "Email Invalid"; 
     } 
     return "OK"; 
    } 

但是,即使當它返回OK,則顯示仍顯示出與該FA-問題,圓圈圖標在它旁邊的單詞OK。請注意,我嘗試了幾種不同的括號組合,並且我總是看到「必需」,「電子郵件無效」或「確定」這兩個字。我從來沒有看到這個詞沒有顯示。

+0

ng-show =「validateEmail(ahs.forms.modal.modalUserEmail)!='OK'」 – 2014-11-24 10:12:42

+0

我認爲還有更多。我更新了這個問題,使其更加清晰。 – 2014-11-24 10:24:44

+0

因爲您選擇提交一個我們無法「按原樣」重現問題的示例,因此無法檢查您的代碼。這裏有一個爲你工作的http://jsfiddle.net/fmtj0cpf/,帶有簡化代碼。 – 2014-11-24 10:40:37

回答

1

你的代碼工作正常「原樣」如果ahs.forms.modal.modalUserEmail是應該的,但如果它不是失敗,這裏的JSFiddle來證明這一點。

我複製/粘貼你的代碼,只是添加了你從問題中遺漏的必需對象。

您是否檢查控制檯是否有錯誤?如果例如ahs.forms.modal.modalUserEmail應該碰巧是null,Angular會非常沮喪。

1

我唯一的猜測是inlineBlock類重寫了display CSS屬性,它在刪除該類後是否仍然發生?

0

現在我知道發生了什麼。您應該將輸入傳遞給validateEmail函數以檢查它是否包含有效值。所以,試試這個:

<form name="form" > 
    <input type="email" name="emailField" ng-model="ahs.forms.modal.modalUserEmail"/> 
    <span class="inlineBlock fa fa-question-circle" ng-show="validateEmail(form.emailField) != 'OK'"></span> 
</form>