AngularJS 数据绑定
AngularJS 中的数据绑定是模型和视图之间的同步。
数据模型
AngularJS 应用程序通常有一个数据模型。数据模型是应用程序可用的数据集合。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});
HTML 视图
显示 AngularJS 应用程序的 HTML 容器称为视图。
视图可以访问模型,在视图中显示模型数据的方式有多种。
您可以使用 ng-bind
指令,该指令将元素的 innerHTML 绑定到指定的模型属性:
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p ng-bind="firstname">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});
</script>
<p>使用 ng-bind 指令将元素的 innerHTML 绑定到数据模型中的属性。</p>
</body>
</html>
你也可以使用双大括号 {{**}}
来显示模型中的内容:
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p>First name: {{firstname}}</p>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});
</script>
<p>可以使用双大括号显示数据模型中的内容。</p>
</body>
</html>
或者可以在HTML控件上使用 ng-model
指令将模型绑定到视图。
ng-model 指令
使用 ng-model
将模型中的数据绑定到HTML控件(输入、选择、文本区域)视图的指令
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<input ng-model="firstname">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});
</script>
<p>在 HTML 控件(input、select、textarea)上使用 ng-model 指令在视图和数据模型之间绑定数据。</p>
</body>
</html>
ng-model
指令在模型和视图之间提供了双向绑定。
双向绑定
AngularJS 中的数据绑定是模型和视图之间的同步。
当 模型 中的数据发生变化时,视图 会反映变化,当 视图 中的数据发生变化时,模型 也会更新。这会立即自动发生,从而确保模型和视图随时更新。
实例
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
Name: <input ng-model="firstname">
<h1>{{firstname}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.lastname = "Doe";
});
</script>
<p>更改输入字段中的名称,模型数据将自动更改,因此标题也将更改其值。</p>
</body>
</html>
AngularJS 控制器
AngularJS 中的应用程序由控制器控制。可以阅读 AngularJS 控制器 一章中的内容。
由于模型和视图的即时同步,控制器可以与视图完全分离,只需专注于模型数据。由于 AngularJS 中的数据绑定,视图将反映控制器中所做的任何更改。
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<h1 ng-click="changeName()">{{firstname}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstname = "John";
$scope.changeName = function() {
$scope.firstname = "Nelly";
}
});
</script>
<p>点击标题运行 "changeName" 功能。</p>
<p>此示例演示如何使用控制器更改模型数据。</p>
</body>
</html>