AngularJS ng-model 指令

ng-model 指令将 HTML 控件(输入、选择、文本区域)的值绑定到应用程序数据。


ng-model 指令

使用 ng-model 指令,可以将输入字段的值绑定到 AngularJS 中创建的变量。

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. Name: <input ng-model="name">
  7. </div>
  8. <script>
  9. var app = angular.module('myApp', []);
  10. app.controller('myCtrl', function($scope) {
  11. $scope.name = "John Doe";
  12. });
  13. </script>
  14. <p>使用 ng model 指令将输入字段的值绑定到控制器中创建的属性。</p>
  15. </body>
  16. </html>

双向绑定

绑定是双向的。如果用户更改输入字段内的值,AngularJS 属性也将更改其值:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <div ng-app="myApp" ng-controller="myCtrl">
  6. 名称: <input ng-model="name">
  7. <h1>您输入: {{name}}</h1>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.name = "John Doe";
  13. });
  14. </script>
  15. <p>更改输入字段中的名称,您将看到标题中的名称相应地更改。</p>
  16. </body>
  17. </html>

验证用户输入

The ng-model directive can provide type validation for application data (number, e-mail, required):

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <form ng-app="" name="myForm">
  6. Email:
  7. <input type="email" name="myAddress" ng-model="text">
  8. <span ng-show="myForm.myAddress.$error.email">非法邮件地址</span>
  9. </form>
  10. <p>在输入字段中输入您的电子邮件地址。如果输入的不是电子邮件格式,AngularJS 将显示错误消息。</p>
  11. </body>
  12. </html>

在上面的示例中,仅当 ng-show 属性中的表达式返回 true 时,才会显示 span。

如果 ng-model 属性中的属性不存在,AngularJS 将为您创建一个。

应用程序状态

ng-model 指令可以提供应用程序数据的状态(invalid、dirty、touched、error):

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <body>
  5. <form ng-app="" name="myForm" ng-init="myText = 'post@myweb.com'">
  6. Email:
  7. <input type="email" name="myAddress" ng-model="myText" required="">
  8. <p>编辑电子邮件地址,并尝试更改状态。</p>
  9. <h2>状态</h2>
  10. <p>Valid: {{myForm.myAddress.$valid}} (如果为 true,则该值满足所有条件).</p>
  11. <p>Dirty: {{myForm.myAddress.$dirty}} (如果为 true,则该值已更改).</p>
  12. <p>Touched: {{myForm.myAddress.$touched}} (如果为 true,那么这个输入框已聚焦).</p>
  13. </form>
  14. </body>
  15. </html>

CSS 样式表

ng-model 指令为 HTML 元素提供 CSS 样式表名,具体取决于它们的状态:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
  4. <style>
  5. input.ng-invalid {
  6. background-color: lightblue;
  7. }
  8. </style>
  9. <body>
  10. <form ng-app="" name="myForm">
  11. 输入您的名称:
  12. <input name="myName" ng-model="myText" required="">
  13. </form>
  14. <p>编辑文本字段,它将根据状态 获得/移除 样式表。</p>
  15. <p><b>备注:</b> 带有 "required" 属性的文本字段为空时无效。</p>
  16. </body>
  17. </html>

ng-model 指令根据表单字段的状态 添加/删除 以下类:

  • ng-empty
  • ng-not-empty
  • ng-touched
  • ng-untouched
  • ng-valid
  • ng-invalid
  • ng-dirty
  • ng-pending
  • ng-pristine

分类导航