AngularJS ng-model 指令
ng-model
指令将 HTML 控件(输入、选择、文本区域)的值绑定到应用程序数据。
ng-model 指令
使用 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="name">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.name = "John Doe";
});
</script>
<p>使用 ng model 指令将输入字段的值绑定到控制器中创建的属性。</p>
</body>
</html>
双向绑定
绑定是双向的。如果用户更改输入字段内的值,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">
名称: <input ng-model="name">
<h1>您输入: {{name}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.name = "John Doe";
});
</script>
<p>更改输入字段中的名称,您将看到标题中的名称相应地更改。</p>
</body>
</html>
验证用户输入
The ng-model
directive can provide type validation for application data (number, e-mail, required):
实例
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<form ng-app="" name="myForm">
Email:
<input type="email" name="myAddress" ng-model="text">
<span ng-show="myForm.myAddress.$error.email">非法邮件地址</span>
</form>
<p>在输入字段中输入您的电子邮件地址。如果输入的不是电子邮件格式,AngularJS 将显示错误消息。</p>
</body>
</html>
在上面的示例中,仅当 ng-show
属性中的表达式返回 true
时,才会显示 span。
如果
ng-model
属性中的属性不存在,AngularJS 将为您创建一个。应用程序状态
ng-model
指令可以提供应用程序数据的状态(invalid、dirty、touched、error):
实例
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<body>
<form ng-app="" name="myForm" ng-init="myText = 'post@myweb.com'">
Email:
<input type="email" name="myAddress" ng-model="myText" required="">
<p>编辑电子邮件地址,并尝试更改状态。</p>
<h2>状态</h2>
<p>Valid: {{myForm.myAddress.$valid}} (如果为 true,则该值满足所有条件).</p>
<p>Dirty: {{myForm.myAddress.$dirty}} (如果为 true,则该值已更改).</p>
<p>Touched: {{myForm.myAddress.$touched}} (如果为 true,那么这个输入框已聚焦).</p>
</form>
</body>
</html>
CSS 样式表
ng-model
指令为 HTML 元素提供 CSS 样式表名,具体取决于它们的状态:
实例
<!DOCTYPE html>
<html>
<script src="https://cdn.bootcdn.net/ajax/libs/angular.js/1.8.2/angular.min.js"></script>
<style>
input.ng-invalid {
background-color: lightblue;
}
</style>
<body>
<form ng-app="" name="myForm">
输入您的名称:
<input name="myName" ng-model="myText" required="">
</form>
<p>编辑文本字段,它将根据状态 获得/移除 样式表。</p>
<p><b>备注:</b> 带有 "required" 属性的文本字段为空时无效。</p>
</body>
</html>
ng-model
指令根据表单字段的状态 添加/删除 以下类:
- ng-empty
- ng-not-empty
- ng-touched
- ng-untouched
- ng-valid
- ng-invalid
- ng-dirty
- ng-pending
- ng-pristine