为什么ng-show没有根据表达式显示或隐藏我的元素?

时间:2014-11-24 10:10:31

标签: angularjs

我有:

<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-question-circle图标,旁边有单词OK。请注意,我已经尝试了几种不同的括号组合,我总是看到“必填”,“电子邮件无效”或“确定”等字样。我从来没有看到这个词没有显示。

3 个答案:

答案 0 :(得分:1)

我唯一的猜测是inlineBlock类覆盖了display CSS属性,删除该类后是否还会发生?

答案 1 :(得分:1)

您的代码运行良好&#34;按原样#34;如果ahs.forms.modal.modalUserEmail是它应该是什么,但如果它不是,则失败,并且JSFiddle来证明它。

我复制/粘贴了您的代码,并添加了您从问题中遗漏的所需对象。

您是否检查过控制台是否有错误?如果例如ahs.forms.modal.modalUserEmail恰好是null,则Angular会感到非常沮丧。

答案 2 :(得分: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>