本文實(shí)例講述了AngularJS多視圖切換用法。分享給大家供大家參考,具體如下:
在AngularJS應(yīng)用中,我們可以將html碎片寫在一個(gè)單獨(dú)的文件中,然后在其他頁(yè)面中將該段碎片加載進(jìn)來。如果有多個(gè)碎片文件,我們還可以在控制器中根據(jù)用戶的操作動(dòng)態(tài)的加載不同的碎片,從而達(dá)到切換視圖的效果。
先來看看筆者寫好的一個(gè)案例吧:

這兩首詞實(shí)際上是兩個(gè)html碎片,分別寫在page1.html和page2.html。下面是這兩個(gè)文件的內(nèi)容:
<!--page1.html內(nèi)容-->
<div>
<p>《南鄉(xiāng)子·登京口北固亭有懷》</p>
<p>何處望神州?滿眼風(fēng)光北固樓。千古興亡多少事,悠悠,不盡長(zhǎng)江滾滾流。</p>
<p>年少萬兜鍪,坐斷東南戰(zhàn)未休。天下英雄誰敵手,曹劉。生子當(dāng)如孫仲謀。</p>
</div>
<!--page2.html內(nèi)容-->
<div>
<p>《蝶戀花》</p>
<p>佇倚危樓風(fēng)細(xì)細(xì),望極春愁,黯黯生天際。草色煙光殘照里,無言誰會(huì)憑闌意。</p>
<p>擬把疏狂圖一醉,對(duì)酒當(dāng)歌,強(qiáng)樂還無味。衣帶漸寬終不悔,為伊消得人憔悴。</p>
</div>
接下來我們看看如何實(shí)現(xiàn)這兩個(gè)碎片的切換。
<!DOCTYPE html>
<html ng-app="routeMod">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
<script type="text/javascript" src="angular-1.3.0.14/angular-route.js"></script>
<link type="text/css" href="css/tutorial07.css" rel="stylesheet">
<title>tutorial07.html</title>
</head>
<body>
<header>
Header
</header>
<div id="content" ng-controller="MultiViewController">
<div id="myView" ng-view="myView" ng-init="init()">
</div>
<div id="btnDiv">
<button ng-click="prePage()">上一頁(yè)</button>
<button ng-click="nextPage()">下一頁(yè)</button>
</div>
</div>
<footer>
Copyright:Rongbo_J
</footer>
<script>
var routeMod = angular.module('routeMod', ['ngRoute']);
routeMod.config(['$routeProvider',function($routeProvider){
$routeProvider.when('/1',{
templateUrl:'tutorial07/page1.html',
controller:'MultiViewController'
})
.when('/2',{
templateUrl:'tutorial07/page2.html',
controller:'MultiViewController'
})
}])
routeMod.controller("MultiViewController",function($scope,$log,$location){
$scope.init = function () {
$location.path("/1");
}
$scope.prePage = function () {
$log.info("prePage");
$location.path("/1");
};
$scope.nextPage = function () {
$log.info("nextPage");
$location.path("/2");
};
});
</script>
</body>
</html>
這里我們需要用到AngularJs的路由模塊ngRoute,模塊代碼封裝在angular-route.js文件,和上節(jié)一樣我們我們需要引入它。
<script type="text/javascript" src="angular-1.3.0.14/angular-route.js"></script>
然后將它注入到我們的模塊中,代碼如下:
var routeMod = angular.module('routeMod', ['ngRoute']);
接下來的工作是配置html碎片的訪問路徑,我們需要調(diào)用模塊的config方法來對(duì)$routeProvider服務(wù)進(jìn)行配置,代碼如下:
routeMod.config(['$routeProvider',function($routeProvider){
$routeProvider.when('/1',{
templateUrl:'tutorial07/page1.html',
controller:'MultiViewController'
})
.when('/2',{
templateUrl:'tutorial07/page2.html',
controller:'MultiViewController'
})
}])
我們通過ng-view指令定義了一個(gè)視圖,在控制器中調(diào)用$location.path()方法來指定在該視圖中加載哪一個(gè)碎片。