AngularJS 数据绑定

AngularJS 中的数据绑定是模型和视图之间的同步。


数据模型

AngularJS 应用程序通常有一个数据模型。数据模型是应用程序可用的数据集合。

  1. var app = angular.module('myApp', []);
  2. app.controller('myCtrl', function($scope) {
  3. $scope.firstname = "John";
  4. $scope.lastname = "Doe";
  5. });

HTML 视图

显示 AngularJS 应用程序的 HTML 容器称为视图。

视图可以访问模型,在视图中显示模型数据的方式有多种。

您可以使用 ng-bind 指令,该指令将元素的 innerHTML 绑定到指定的模型属性:

  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. <p ng-bind="firstname">
  7. </div>
  8. <script>
  9. var app = angular.module('myApp', []);
  10. app.controller('myCtrl', function($scope) {
  11. $scope.firstname = "John";
  12. $scope.lastname = "Doe";
  13. });
  14. </script>
  15. <p>使用 ng-bind 指令将元素的 innerHTML 绑定到数据模型中的属性。</p>
  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="myApp" ng-controller="myCtrl">
  6. <p>First name: {{firstname}}</p>
  7. </div>
  8. <script>
  9. var app = angular.module('myApp', []);
  10. app.controller('myCtrl', function($scope) {
  11. $scope.firstname = "John";
  12. $scope.lastname = "Doe";
  13. });
  14. </script>
  15. <p>可以使用双大括号显示数据模型中的内容。</p>
  16. </body>
  17. </html>

或者可以在HTML控件上使用 ng-model 指令将模型绑定到视图。


ng-model 指令

使用 ng-model 将模型中的数据绑定到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="myApp" ng-controller="myCtrl">
  6. <input ng-model="firstname">
  7. </div>
  8. <script>
  9. var app = angular.module('myApp', []);
  10. app.controller('myCtrl', function($scope) {
  11. $scope.firstname = "John";
  12. $scope.lastname = "Doe";
  13. });
  14. </script>
  15. <p>在 HTML 控件(input、select、textarea)上使用 ng-model 指令在视图和数据模型之间绑定数据。</p>
  16. </body>
  17. </html>

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="firstname">
  7. <h1>{{firstname}}</h1>
  8. </div>
  9. <script>
  10. var app = angular.module('myApp', []);
  11. app.controller('myCtrl', function($scope) {
  12. $scope.firstname = "John";
  13. $scope.lastname = "Doe";
  14. });
  15. </script>
  16. <p>更改输入字段中的名称,模型数据将自动更改,因此标题也将更改其值。</p>
  17. </body>
  18. </html>

AngularJS 控制器

AngularJS 中的应用程序由控制器控制。可以阅读 AngularJS 控制器 一章中的内容。

由于模型和视图的即时同步,控制器可以与视图完全分离,只需专注于模型数据。由于 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. <h1 ng-click="changeName()">{{firstname}}</h1>
  7. </div>
  8. <script>
  9. var app = angular.module('myApp', []);
  10. app.controller('myCtrl', function($scope) {
  11. $scope.firstname = "John";
  12. $scope.changeName = function() {
  13. $scope.firstname = "Nelly";
  14. }
  15. });
  16. </script>
  17. <p>点击标题运行 "changeName" 功能。</p>
  18. <p>此示例演示如何使用控制器更改模型数据。</p>
  19. </body>
  20. </html>

分类导航