AngularJS實用入門

AngularJS的簡介

AngularJS 誕生於 2009 年,由 Misko Hevery 等人創建,後爲 Google 所收購。是一款優秀的前端 JS 框架,已經被用於 Google 的多款產品當中。AngularJS 有着諸多特性,最爲核心的是:MVC、模塊化、自動化雙向數據綁定、依賴注入等等

一,AngularJS 四大特徵

1.MVC模式

Angular 遵循軟件工程的 MVC 模式,並鼓勵展現,數據,和邏輯組件之間的鬆耦合.通過依賴注入(dependency injection),Angular 爲客戶端的 Web 應用帶來了傳統服務端的服務,例如獨立於視圖的控制。 因此,後端減少了許多負擔,產生了更輕的 Web 應用。

在這裏插入圖片描述

2.數據的雙向綁定

雙向的數據綁定允許模型和視圖之間數據的自動同步

在這裏插入圖片描述

3.依賴注入

依賴注入(Dependency Injection,簡稱 DI)是一種設計模式, 指某個對象依賴的其他對象無需手工創建,此對象在創建時,其依賴的對象由框架來自動創建並注入進來,其實就是最少知識法則;模塊中所有的 service 和 provider 兩類對象,都可以根據形參名稱實現 DI.

4.模塊化設計

高內聚低耦合法則
1)官方提供的模塊 ng、ngRoute(主要實現路由功能)、ngAnimate(實現一些動畫效果)
2)用戶自定義的模塊 angular.module(‘模塊名’,[ ])

二,AngularJs的下載
1.下載網址:http://www.angularjs.net.cn/download/

在這裏插入圖片描述

2.AngularJS的常用屬性
在這裏插入圖片描述

ng-app 在任何元素上使用,代表 angular 應用作用域
ng-controller 指定控制器
ng-model 指定模型
ng-bind 或者 {{屬性名}} 進行屬性取值 用於顯示

三,AngularJs的常用操作

1.雙向綁定 ng-model

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>AngularJs數據雙向綁定</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>
	</head>
	<!--ng-app指令是AngularJs程序執行的入口-->
	<body ng-app>
		<input  type="text" ng-model="name"/>
		<!--AngularJs的表達式:{{變量或方法等}}等價於ng-bind指令,進行屬性取值,用於顯示數據  -->
		{{name}}
	</body>
</html>

2.初始化指令 ng-init

我們如果希望有些變量具有初始值,可以使用 ng-init 指令來對變量初始化

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>AngularJs初始化指令</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>
	</head>
	<!--ng-app指令是AngularJs程序執行的入口    ng-init:可以在頁面加載時,執行一些的操作-->
	<body ng-app ng-init="name='張三'">
		<input  type="text" ng-model="name"/>
		<!--AngularJs的表達式:{{變量或方法等}}等價於ng-bind指令,進行屬性取值,用於顯示數據  -->
		{{name}}
	</body>
</html>

3.控制器ng-controller

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>AngularJs控制器</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>
		
		<script type="text/javascript">
			//定義一個模塊
			var app = angular.module('myApp',[]);
			
			//定義一個控制器  在定義一個控制器前,必須定義模塊 
			//$scope是視圖與控制器之間數據交換的橋樑
			app.controller('MyController',function($scope){
				$scope.add=function(){
					return  parseInt($scope.x) + parseInt($scope.y);
				}
			})
		</script>
	</head>
	<!--模塊名和控制器名寫上面自己定義的-->
	<body ng-app="myApp" ng-controller="MyController">
		X:<input  type="text" ng-model="x"/><br />
		Y:<input  type="text" ng-model="y"/><br />
		
		結果:{{add()}}
	</body>
</html>

$scope 的使用貫穿整個 AngularJS App 應用,它與數據模型相關聯,同時也是表達式執行的上下文.有了$scope 就在視圖和控制器之間建立了一個通道,基於作用域視圖在修改數據時會立刻更新 $scope,同樣的$scope 發生改變時也會立刻重新渲染視圖.

4.事件指令 ng-click

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>AngularJs事件指令</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>
		
		<script type="text/javascript">
			//定義一個模塊
			var app = angular.module('myApp',[]);
			
			//定義一個控制器  在定義一個控制器前,必須定義模塊 
			app.controller('MyController',function($scope){
				$scope.add=function(){
					$scope.z = parseInt($scope.x) + parseInt($scope.y);
				}
			})
		</script>
	</head>
	<!--模塊名和控制器名寫上面自己定義的-->
	<body ng-app="myApp" ng-controller="MyController" ng-init="val='運算'">
		X:<input  type="text" ng-model="x"/><br />
		Y:<input  type="text" ng-model="y"/><br />
		
		<!--ng-bind 或者 {{屬性名}} 進行屬性取值 用於顯示-->
		<button ng-bind="val" ng-click="add()"></button><br />
		
		結果:{{z}}
	</body>
</html>

5.循環數組 ng-repeat

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>AngularJs事件指令</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>

		<script type="text/javascript">
			//定義一個模塊
			var app = angular.module('myApp', []);

			//定義一個控制器  在定義一個控制器前,必須定義模塊
			app.controller('MyController', function($scope) {
				$scope.array = [1, 2, 3, 4, 5]
			})
		</script>
	</head>
	<!--模塊名和控制器名寫上面自己定義的-->

	<body ng-app="myApp" ng-controller="MyController">
		<table>
			<tr ng-repeat="x in array">
				<td>{{x}}</td>
			</tr>
		</table>
	</body>

</html>

6.內置服務 $http

我們的數據一般都是從後端獲取的,那麼如何獲取數據呢?我們一般使用內置服務$http 來實現從後端獲取數據。博主爲了方便演示,數據不再從後端進行獲取,創建一個data.json文件,存放一些數據,用於模擬從後端獲取的數據。

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>AngularJs內置服務$http</title>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>

		<script type="text/javascript">
			//定義一個模塊
			var app = angular.module('myApp', []);

			//定義一個控制器  在定義一個控制器前,必須定義模塊
			app.controller('MyController', function($http,$scope) {
				$scope.findAll = function(){
					$http.get('js/data.json').success(
						function(response){
							$scope.list = response;
					});
				}
			})
		</script>
	</head>
	<!--模塊名和控制器名寫上面自己定義的-->
	<body ng-app="myApp" ng-controller="MyController" ng-init="findAll()">
		<table>
			<tr>
				<td>姓名</td>
				<td>數學</td>
				<td>語文</td>
			</tr>
			<tr ng-repeat="entity in list">
				<td>{{entity.name}}</td>
				<td>{{entity.shuxue}}</td>
				<td>{{entity.yuwen}}</td>
			</tr>
		</table>
	</body>

</html>

7.路由模塊ngRoute的使用

我們在實際開發項目的過程中,許多頁面的head和footer都是相同的,我們只需要改變body部分的內容。AngularJS中的ngRoute模塊就是用來實現這一功能的。

在這裏插入圖片描述

在頁面引入 angular 的 js ,route 的 js

在這裏插入圖片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>AngularJS的路由功能</title>
		<h1>頁面的Head部分</h1>
		<a href="#/JavaEE">JavaEE</a>
		<a href="#/QKL">區塊鏈</a>
		<a href="#/Python">Python</a>
		<!--引入AngularJs文件-->
		<script type="text/javascript" src="js/angular.min.js"></script>
		<!--引入ngRoute模塊的js文件-->
		<script type="text/javascript" src="js/angular-route.min.js"></script>
			
		<script type="text/javascript">
			//定義一個模塊  注意:使用路由功能,必須引入ngRoute模塊才能進行使用
			var app = angular.module('myApp',['ngRoute']);
			
			//設置路由對應的頁面  otherwise:用於設置默認想要顯示的頁面
			app.config(['$routeProvider',function($routeProvider){
				$routeProvider.when('/QKL',{
					templateUrl:'區塊鏈.html'
				}).when('/JavaEE',{
					templateUrl:'JavaEE.html'
				}).when('/Python',{
					templateUrl:'Python.html'
				}).otherwise({
					//默認顯示的頁面,必須是上面設置的路由中的其中一個
					redirectTo:'/Python'
				});
			}])
				
		</script>
	</head>
		
	<body ng-app="myApp">
		
		<!--用於顯示不同頁面的內容-->
		<!--ng-view用於顯示路由調用的頁面-->
		<div ng-view>
			
		</div>
	 
	</body>
	
		
	<footer>
		<h1>頁面的Footer部分</h1>
	</footer>
</html>

注意事項:

在這裏插入圖片描述

分享示例代碼在碼雲上的地址:https://gitee.com/xiaoguixiaogege/AngularJS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章