2014-11-24 48 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>