AngularJS(一)

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 指令绑定输入域到控制器的属性(firstNamelastName)。

 

<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 = '[email protected]'">
    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



 

猜你喜欢

转载自blog.csdn.net/haoui123/article/details/72764180