この記事の例では、AngularJS マルチビュー切り替えの使用方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
AngularJS アプリケーションでは、HTML フラグメントを別のファイルに記述し、そのフラグメントを他のページにロードできます。複数のフラグメント ファイルがある場合は、ユーザーの操作に基づいて異なるフラグメントをコントローラーに動的にロードして、ビューを切り替える効果を実現することもできます。
まず、著者が書いたケースを見てみましょう:
これら 2 つの詩は、実際には 2 つの HTML フラグメントであり、それぞれ page1.html と page2.html で書かれています。これら 2 つのファイルの内容は次のとおりです:
<!--page1.html内容--> <div> <p>《南乡子·登京口北固亭有怀》</p> <p>何处望神州?满眼风光北固楼。千古兴亡多少事,悠悠,不尽长江滚滚流。</p> <p>年少万兜鍪,坐断东南战未休。天下英雄谁敌手,曹刘。生子当如孙仲谋。</p> </div>
<!--page2.html内容--> <div> <p>《蝶恋花》</p> <p>伫倚危楼风细细,望极春愁,黯黯生天际。草色烟光残照里,无言谁会凭阑意。</p> <p>拟把疏狂图一醉,对酒当歌,强乐还无味。衣带渐宽终不悔,为伊消得人憔悴。</p> </div>
次に、これら 2 つのフラグメントを切り替える方法を見てみましょう。
<!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 フラグメントのアクセス パスを設定することです。$routeProvider サービスを設定するために、モジュールの config メソッドを呼び出す必要があります。コードは次のとおりです。
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() メソッドを呼び出して、ビューにロードするフラグメントを指定します。