Angular和ngMessages

时间:2016-03-14 00:42:29

标签: angularjs angularjs-directive

我有一个带有错误字段的表单。代码如下:



<form name="myform" ng-submit="submit">
  <input name="text" ng-model="username" required>
  <div ng-messages="myform.username.$error">
    <div  ng-message="required">Field is required</div>
    <div ng-message="has_spaces">Field must not contain spaces</div>
  </div>
</form>
&#13;
&#13;
&#13;

我的ngMessages如何正确运作的逻辑?我尝试设置&#34; has_spaces&#34;表单提交后但没有任何效果。

3 个答案:

答案 0 :(得分:1)

您的代码段是正确的,但您需要通过name属性和 ng-model的值来访问您希望获取错误的表单元素。即,您应该访问myform.username.$error,而不是访问myform.text.$error。这段代码应该可以胜任:

<form name="myform" ng-submit="submit">
  <input name="text" ng-model="username" required>
  <div ng-messages="myform.text.$error">
    <div  ng-message="required">Field is required</div>
    <div ng-message="has_spaces">Field must not contain spaces</div>
  </div>
</form>

答案 1 :(得分:0)

问题是

  1. 您正在引用模型而不是ng-messages中输入字段本身的名称。
  2. 您没有定义输入类型。 make type =“text”
  3. 将输入名称重命名为username,但在模型本身中,您应将其存储到对象IMO
  4. 我已经在下面更正了,请尝试使用

    <form name="myform" ng-submit="submit">
      <input name="username" type="text" ng-model="user.name" required>
      <div ng-messages="myform.username.$error">
        <div  ng-message="required">Field is required</div>
        <div ng-message="has_spaces">Field must not contain spaces</div>
      </div>
    </form>
    

答案 2 :(得分:0)

在角度使用ng-message, ng-maxlength, ng-minlength或任何类型的验证时,使用name属性而不是ng-model。因此,在您的代码中,您必须使用ng-messages = "myform.text.$error"