angularjs指令系统
在之前的例子中,我们在html标签中认识了几个ng-
的属性,比如ng-app
, ng-controller
,他们都是angularjs指令系统中的一员,在以后的学习中,我们还会遇到更多的指令系统,他们能够方便快捷的帮助我们实现很多功能。
MVVM
通俗来讲,就是数据改变,视图就改变,视图改变,数据也跟着改变,这就是双向改变的过程。在angular中
数据
指的是js声明作用域的函数中,挂载在$scope
上的变量的具体值视图
指的是在html中的{{}}
中的变量的呈现效果
先来看一个数据改变视图的例子
在js中,setTimeout能够延迟实现,angular中也同样对setTimeout封装了一个叫做$timeout
的属性,他的用法和setTimeout一致。
<!DOCTYPE html>
<html ng-app>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<title>Document</title>
<link rel="stylesheet" href="bootstrap.css">
<script src="angular.min.js"></script>
</head>
<body>
<div class="container">
<div class="row" ng-controller="R1">
<h4>{{name}}</h4>
</div>
</div>
</body>
<script>
function R1($scope, $timeout) {
$scope.name = "young jake";
$timeout(function() {
$scope.name = "old jake";
}, 2000);
}
</script>
</html>
两秒之后,young jake 变成 old jake.
另外一个例子,点击button,input框中的数据发生变化
ng-click
点击事件
<!DOCTYPE html>
<html ng-app>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<title>Document</title>
<link rel="stylesheet" href="bootstrap.css">
<script src="angular.min.js"></script>
</head>
<body>
<div class="container">
<div class="row" ng-controller="R1">
<h4>{{name}}</h4>
</div>
<div class="row" ng-controller="R2">
<div class="input-group col-xs-6 col-xs-offset-3">
<span class="input-group-btn" ng-click="text='after click.'">
<button type="button" class="btn btn-default">Change!</button>
</span>
<input type="text" class="form-control" value="{{text}}">
</div>
</div>
</div>
</body>
<script>
function R1($scope, $timeout) {
$scope.name = "young jake";
$timeout(function() {
$scope.name = "old jake";
}, 2000);
}
function R2($scope) {
$scope.text = "this is a bootstrap input-group.";
}
</script>
</html>
最后一个例子是视图改变数据的例子,在该例子中,通过改变input的值将数据中的值改变,然后将改变之后的数据在另外一个input中显示出来
ng-model
用来同步视图和数据内容的指令,通过该指令实现双向数据同步
<!DOCTYPE html>
<html ng-app>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<title>Document</title>
<link rel="stylesheet" href="bootstrap.css">
<script src="angular.min.js"></script>
</head>
<body>
<div class="container">
<div class="row" ng-controller="Show">
<div class="input-group">
<span class="input-group-btn"><button type="button" class="btn btn-primary">输入</button></span>
<input type="text" class="form-control" ng-model="content" placeholder="{{default}}">
</div>
<div class="input-group">
<span class="input-group-btn"><button type="button" class="btn btn-default">显示</button></span>
<input type="text" class="form-control" value="{{content}}", placeholder="{{default}}">
</div>
</div>
</div>
</body>
<script>
function Show($scope) {
$scope.default = 'please input your content';
$scope.content = "";
}
</script>
</html>