【问题标题】:ngMessages not working correctly with nested inputngMessages 在嵌套输入中无法正常工作
【发布时间】:2016-07-18 22:03:54
【问题描述】:

我有一个嵌套在另一个 <div> 元素中的输入字段,我试图在该输入字段上使用 ngMessages,但我似乎无法正确验证它。

<div class="form-group" ng-model="object.idnumber" ng-hide="condition.userObjectsHidden">
    <label class="form-control-label col-lg-12">ID Number</label>
    <div class="col-lg-12">
    <input type="text" name="idnumber" placeholder="111001111"
        ng-model="user.idnumber"
        ng-pattern="idpattern"
        class="form-control input-lg"
        required="required"></input>
        <div ng-messages="idnumber.$error" ng-if="idnumber.$dirty">
            <p ng-message="pattern">You are wrong!</p>
        </div>
    </div>
</div>

我不确定&lt;div ng-messages...&gt; 标记所在的功能是否重要,但我也尝试过将其完全置于该元素之外,结果相同。如果我正确理解了 Angular 和 ngMessages,我需要将 ng-messages 分配给一个指令——在这种情况下是 $error——我通过点遍历 name 分配得到。据我所知,我使用idnumber.$error 完成了此操作,但公平地说,我还尝试使用kiosk-form.uin.$error 进行更广泛的点遍历,其中kiosk-form 是整个表单的名称。

ng-message="pattern"ng-message="required" 我都试过了。此外,为了清楚起见,idpattern 在我的 Javascript 文件中定义为正则表达式字符串。定义正确。

【问题讨论】:

    标签: javascript html angularjs validation ng-messages


    【解决方案1】:

    将您的表单重命名为kioskForm然后ng-messages ="kioskForm.idnumber.$error"

    【讨论】:

    • 成功了!谢谢!为什么我什至需要使用kioskForm,不管它的拼写如何? idnumber 是完全独一无二的;没有嵌套在其他任何地方的另一个“idnumber”。所以按照我的逻辑,简单地使用idnumber.$error 应该会自动映射到具有该名称的唯一现有元素。
    • 很高兴知道 :-),Angular 为每个具有表单名称的表单维护一个错误对象,例如 kioskForm.$error
    • 哦,它与表单相关联!太好了,这很有帮助。再次感谢!
    • 快乐是我的 :-)
    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2021-02-20
    • 2019-01-07
    相关资源
    最近更新 更多