Page 59 - AngularJS权威教程
P. 59

7.2  表单验证   39


              ngMessages(1.3+)                                                                       1

                  众所周知,表单和验证是Angular中复杂的组件之一。上面的例子不是特别好,不简洁。在
              Angular 1.3发布前,表单验证必须以这种方式编写。                                                          2
                  然而在发布的Angular 1.3中,Angular核心做了一个升级。它不再需要基于一个详细的表达式
              状态创建元素显示或隐藏(正如我们在本章所做的那样)。                                                             3

                  <form name="signup_form" novalidate ng-submit="signupForm()"
                  ng-controller="signupController">                                                  4
                      <fieldset>
                          <legend>Signup</legend>
                          <div class="row">
                              <div class="large-12 columns">                                         5
                                  <label>Your name</label>
                                  <input type="text" placeholder="Name" name="name" ng-model="signup.name"
                                      ng-minlength=3 ng-maxlength=20 required />                     6
                                  <div class="error" ng-show="signup_form.name.$dirty && signup_form.name.
                                      $invalid && signup_form.submitted">
                                      <small class="error" ng-show="signup_form.name.$error.required">
                                          Your name is required.</small>                             7
                                      <small class="error" ng-show="signup_form.name.$error.minlength">
                                          Your name is required to be at least 3 characters</small>
                                      <small class="error" ng-show="signup_form.name.$error.maxlength">   8
                                          Your name cannot be longer than 20 characters </small>
                                  </div>
                              </div>                                                                 9
                          </div>
                          <button type="submit">Submit</button>
                      </fieldset>
                  </form>                                                                            10
                  本质上这一功能会检查错误对象的状态发生了变化。此外,我们还得到了站点中每个表单需
              要的很多额外的和重复的标记。这显然不是一个理想的解决方案。                                                          11

                  从1.3开始,Angular中新增了一个ngMessages指令。
                                                                                                     12
                  安装
                  安装ngMessages很简单,因为它被打包成了一个Angular模块。首先下载这个模块:
                                                                                                     13
                  $ bower install --save angular-messages
                  或者,也可以从angular.org下载该文件并将它保存到项目中。还需要将angular-messages.js这                          14
              个JavaScript引入我们的主HTML中:

                  <script type="text/javascript" src="bower_components/angular-messages/angular-messages.js">   15
                      </script>
                  最后,我们还要告诉Angular将ngMessages作为应用程序的依赖模块引入,就像这样:
                                                                                                     16
                  angular.module('myApp', ['ngMessages']);
                  现在,我们已经安装了ngMessages,然后可以马上开始使用它了。使用前面的例子作为基                                       17
              础,你可以移除ng-show指令,然后使用ngMessages的一个更简洁的实现替换它。

                  <form name="signup_form" novalidate ng-submit="signupForm()"                       18
                  ng-controller="signupController">
   54   55   56   57   58   59   60   61   62   63   64