本文實例講述了AngularJS多視圖切換用法。分享給大家供大家參考,具體如下:
在AngularJS應用程式中,我們可以將html碎片寫在一個單獨的檔案中,然後在其他頁面中將該段碎片載入進來。如果有多個碎片文件,我們還可以在控制器中根據使用者的操作動態的載入不同的碎片,從而達到切換視圖的效果。
先來看看筆者寫好的一個案例吧:
這兩個字其實是兩個html碎片,分別寫在page1.html和page2.html。下面是這兩個檔案的內容:
<!--page1.html内容--> <div> <p>《南乡子·登京口北固亭有怀》</p> <p>何处望神州?满眼风光北固楼。千古兴亡多少事,悠悠,不尽长江滚滚流。</p> <p>年少万兜鍪,坐断东南战未休。天下英雄谁敌手,曹刘。生子当如孙仲谋。</p> </div>
<!--page2.html内容--> <div> <p>《蝶恋花》</p> <p>伫倚危楼风细细,望极春愁,黯黯生天际。草色烟光残照里,无言谁会凭阑意。</p> <p>拟把疏狂图一醉,对酒当歌,强乐还无味。衣带渐宽终不悔,为伊消得人憔悴。</p> </div>
接下來我們來看看如何實現這兩個碎片的切換。
<!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()">上一页</button> <button ng-click="nextPage()">下一页</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文件,和上節一樣我們我們需要引入它。
<script type="text/javascript" src="angular-1.3.0.14/angular-route.js"></script>
然後將它注入到我們的模組中,程式碼如下:
var routeMod = angular.module('routeMod', ['ngRoute']);
接下來的工作是配置html碎片的存取路徑,我們需要呼叫模組的config方法來對$routeProvider服務進行配置,程式碼如下:
routeMod.config(['$routeProvider',function($routeProvider){ $routeProvider.when('/1',{ templateUrl:'tutorial07/page1.html', controller:'MultiViewController' }) .when('/2',{ templateUrl:'tutorial07/page2.html', controller:'MultiViewController' }) }])
我們透過ng-view指令定義了一個視圖,在控制器中呼叫$location.path()方法來指定在該視圖中載入哪一個碎片。