AngularJS 表单

AngularJS 中的表单提供输入控件的数据绑定和验证。


输入控件

输入控件是 HTML 输入元素:

  • input 元素
  • select 元素
  • button 元素
  • textarea 元素

数据绑定

输入控件通过使用 ng-model 指令提供数据绑定。

  1. <input type="text" ng-model="firstname">

应用程序现在有一个名为 firstname 的属性。

ng-model 指令将输入控制器绑定到应用程序的其余部分。

属性 firstname 可以在控制器中引用:

实例
  1. <!DOCTYPE html>
  2. <html lang="en">
  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="formCtrl">
  6. <form>
  7. First Name: <input type="text" ng-model="firstname">
  8. </form>
  9. </div>
  10. <script>
  11. var app = angular.module('myApp', []);
  12. app.controller('formCtrl', function($scope) {
  13. $scope.firstname = "John";
  14. });
  15. </script>
  16. </body>
  17. </html>

它也可以在应用程序的其他地方引用:

实例
  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="">
  6. <form>
  7. 姓氏: <input type="text" ng-model="firstname">
  8. </form>
  9. <h2>你输入: {{firstname}}</h2>
  10. </div>
  11. <p>更改输入字段中的名称,您将看到标题中的名称相应地更改。</p>
  12. </body>
  13. </html>

Checkbox

复选框的值为 truefalse。将 ng-model 指令应用于复选框,并在应用程序中使用其值。

实例

如果选中复选框,则显示标题:

  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="">
  6. <form>
  7. 选中以显示标题:
  8. <input type="checkbox" ng-model="myVar">
  9. </form>
  10. <h2 ng-show="myVar">我的标题</h2>
  11. </div>
  12. <p>选中复选框时,标题的 ng-show 属性设置为 true。</p>
  13. </body>
  14. </html>

Radiobuttons

Bind radio buttons to your application with the ng-model directive.

Radio buttons with the same ng-model can have different values, but only the selected one will be used.

  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 ng-app="">
  5. <form>
  6. Pick a topic:
  7. <input type="radio" ng-model="myVar" value="dogs">Dogs
  8. <input type="radio" ng-model="myVar" value="tuts">Tutorials
  9. <input type="radio" ng-model="myVar" value="cars">Cars
  10. </form>
  11. <div ng-switch="myVar">
  12. <div ng-switch-when="dogs">
  13. <h2>Dogs</h2>
  14. <p>Welcome to a world of dogs.</p>
  15. </div>
  16. <div ng-switch-when="tuts">
  17. <h2>Tutorials</h2>
  18. <p>Learn from examples.</p>
  19. </div>
  20. <div ng-switch-when="cars">
  21. <h2>Cars</h2>
  22. <p>Read about cars.</p>
  23. </div>
  24. </div>
  25. <p>ng-switch指令根据单选按钮的值隐藏和显示 HTML 部分。</p>
  26. </body>
  27. </html>

myVar 的值将是 dogs, tuts, 或者 cars


Selectbox

使用 ng-model 指令将选择框绑定到应用程序。

ng-model 属性中定义的属性将具有 selectbox 中所选选项的值。

实例

根据所选选项的值显示一些文本:

  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 ng-app="">
  5. <form>
  6. 选择一个主题:
  7. <select ng-model="myVar">
  8. <option value="">
  9. <option value="dogs">Dogs
  10. <option value="tuts">Tutorials
  11. <option value="cars">Cars
  12. </select>
  13. </form>
  14. <div ng-switch="myVar">
  15. <div ng-switch-when="dogs">
  16. <h2>Dogs</h2>
  17. <p>Welcome to a world of dogs.</p>
  18. </div>
  19. <div ng-switch-when="tuts">
  20. <h2>Tutorials</h2>
  21. <p>Learn from examples.</p>
  22. </div>
  23. <div ng-switch-when="cars">
  24. <h2>Cars</h2>
  25. <p>Read about cars.</p>
  26. </div>
  27. </div>
  28. <p>ng-switch 指令根据下拉列表的值隐藏和显示 HTML 部分。</p>
  29. </body>
  30. </html>

myVar 的值将是 dogs, tuts, 或者 cars


程序代码

  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="formCtrl">
  6. <form novalidate="">
  7. 姓氏:<br>
  8. <input type="text" ng-model="user.firstName"><br>
  9. 名字:<br>
  10. <input type="text" ng-model="user.lastName">
  11. <br><br>
  12. <button ng-click="reset()">重置</button>
  13. </form>
  14. <p>form = {{user}}</p>
  15. <p>master = {{master}}</p>
  16. </div>
  17. <script>
  18. var app = angular.module('myApp', []);
  19. app.controller('formCtrl', function($scope) {
  20. $scope.master = {firstName:"John", lastName:"Doe"};
  21. $scope.reset = function() {
  22. $scope.user = angular.copy($scope.master);
  23. };
  24. $scope.reset();
  25. });
  26. </script>
  27. </body>
  28. </html>
novalidate 属性在 HTML5 中新增的。它会禁用任何默认浏览器验证。

实例解释

ng-app 指令定义了 AngularJS 应用程序。ng-controller 指令定义应用程序控制器。

ng-model 指令将两个输入元素绑定到模型中的 用户 对象。

formCtrl 控制器为 对象设置初始值,并定义 reset() 方法。

reset() 方法将用户对象设置为主对象。

ng-click 指令仅在单击按钮时才会调用 reset() 方法。

此应用程序不需要 novalidate 属性,但通常在 AngularJS 表单中使用它来覆盖标准 HTML5 验证。

分类导航