2017-05-26 学习记录:
一、入门程序
二、ng-controller控制器
三、AngularJS指令
四、ng-repeat
五、ng-model
六、Scope作用域
七、AngularJS过滤器
一、入门程序:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>
<div ng-app="" ng-init="firstname='haorui'">
<!--ng-model的用法-->
<p>姓名:<input type="text" ng-model="name"></p>
<h1>第一种方式:{{name}}</h1>
<!--在div中加ng-init后,ng-bind绑定到HTML中-->
<p>第二种方式:<span ng-bind="firstname"></span></p>
<!--表达式的方式,和ng-bind有相同的效果-->
<p>第三种方式: {{firstname}}</p>
</div>
</body>
</html>
1、<div ng-app=""> 中间不能写东西,若写值,则后面要跟ng-controller.
2、多个ng-app必须放js代码:一般来说只有一个 ng-app,多出来的不会执行,但是也没有硬性规定,如果你要多个ng-app也行,不过得用js启动 ,代码如下:
angular.bootstrap(document.getElementById("app2"), ['yourApp']);
二、ng-controller 控制器
AngularJS 应用程序由 ng-app 定义。应用程序在<div>内运行。
ng-controller="myCtrl" 属性是一个AngularJS指令。用于定义一个控制器。
myCtrl 函数是一个 JavaScript函数。
AngularJS 使用$scope 对象来调用控制器。
在 AngularJS 中,$scope 是一个应用对象(属于应用变量和函数)。
控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。
控制器在作用域中创建了两个属性 (firstName 和 lastName)。
ng-model 指令绑定输入域到控制器的属性(firstName和lastName)。
<div ng-app="myApp" ng-controller="personCtrl">
名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{fullName()}}
</div>
<script>
var app = angular.module('myApp', []);
app.controller('personCtrl', function($scope) {
$scope.firstName = "John";
$scope.lastName = "Doe";
$scope.fullName = function() {
return $scope.firstName + " " + $scope.lastName;
}
});
</script>
三、AngularJS指令
AngularJS 通过被称为 指令 的新属性来扩展HTML。
AngularJS 通过内置的指令来为应用添加功能。
AngularJS 允许你自定义指令
数据绑定:
{{ firstName }} 是通过 ng-model="firstName" 进行同步。
AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。
喜欢这个上下键可以增删减值。
四、ng-repeat重复HTML元素
<div data-ng-app="" data-ng-init="names=['Jani','Hege','Kai']">
<p>使用 ng-repeat 来循环数组</p>
<ul>
<li data-ng-repeat="x in names">
{{ x }}
</li>
</ul>
</div>
AngularJS 完美支持数据库的 CRUD(增加Create、读取Read、更新Update、删除Delete)应用程序。
五、ng-model
1、验证用户输入:
<form ng-app="" name="myForm">
Email:
<input type="email" name="myAddress" ng-model="text">
<span ng-show="myForm.myAddress.$error.email">不是一个合法的邮箱地址</span>
</form>
<p>在输入框中输入你的邮箱地址,如果不是一个合法的邮箱地址,会弹出提示信息。</p>
提示信息会在 ng-show 属性返回 true 的情况下显示。
2、ng-model 指令可以为应用数据提供状态值(invalid, dirty, touched, error):
<form ng-app="" name="myForm" ng-init="myText = 'test@runoob.com'">
Email:
<input type="email" name="myAddress" ng-model="myText" required></p>
<h1>状态</h1>
{{myForm.myAddress.$valid}}
{{myForm.myAddress.$dirty}}
{{myForm.myAddress.$touched}}
</form>
六、Scope作用域
<div ng-app="myApp" ng-controller="myCtrl">
<h1>{{lastname}} 家族成员:</h1>
<ul>
<li ng-repeat="x in names">{{x}} {{lastname}}</li>
</ul>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $rootScope) {
$scope.names = ["Emil", "Tobias", "Linus"];
$rootScope.lastname = "Refsnes";
});
</script>
七、angularJS过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中。
现在都把JavaScript代码放在一个js文件里,在jsp里进行引用。
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名为 {{ lastName | uppercase }}</p>
</div>
<script src="http://www.runoob.com/try/demo_source/personController.js"></script>
----------------------------------自定义过滤器:可以将字符串反转------------------------------
<div ng-app="myApp" ng-controller="myCtrl">
姓名: {{ msg | reverse }}
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.msg = "Runoob";
});
app.filter('reverse', function() {
//可以注入依赖
return function(text) {
return text.split("").reverse().join("");
}
});
</script>
一个过滤器的综合小程序:
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="myCtrl">
<!--uppercase转换成大写-->
<div ng-bind="myName | uppercase"></div>
<!--lowercase转换成小写-->
<div ng-bind="myName | lowercase"></div>
<!--currency 过滤器将数字格式化为货币格式-->
<div class="" ng-bind="money | currency : '¥'"> </div>
<!--orderBy 过滤器根据表达式排列数组-->
<div class="" ng-repeat="v in book | orderBy:'id'">
<p ng-bind="v.name"></p>
</div>
<!--orderBy 过滤器根据表达式排列数组 默认正序asc,倒序添加-负号-->
<div class="" ng-repeat="v in book | orderBy:'-id' | filter : ''">
<p ng-bind="v.name" style="color:red;"></p>
</div>
<!--filter 过滤器根据表达式过滤不包含过滤器中的内容-->
<!--自定义注入依赖myName-->
<!--自定义过滤器aa-->
<div class="" ng-bind="myName | aa" style="color:blue;">
</div>
</div>
<script>
angular.module('myApp',[]).controller('myCtrl',function($scope){
$scope.myName="Dhx";
$scope.money=100;
$scope.book=[
{"id":"1","name":"数据结构"},
{"id":"2","name":"算法基础"},
{"id":"5","name":"数据分析"},
{"id":"4","name":"Java语言程序设计"},
{"id":"3","name":"离散数学"}
]
}).filter('aa',function(){
//split("")将val切割成数组,reverse()将数组反转,join("")将数组变成字符串
return function(val){
return val.split("").reverse().join("");
}
})
</script>
</body>
</html>
HR
hr
¥100.00
数据结构
算法基础
离散数学
Java语言程序设计
数据分析
数据分析
Java语言程序设计
离散数学
算法基础
数据结构
rH