AngularJS入门与进阶
上QQ阅读APP看书,第一时间看更新

6.3 ng-template指令的使用

在本章前面的两个案例中,我们把每个视图都写在一个单独的HTML文件中,有时候视图内容比较少,我们可能会希望把不同的视图集成到同一个页面中,或者要开发一个单页面应用(SPA),就可以使用ng-template指令来实现。下面是一个ng-template指令的使用案例:

代码清单:ch06\ch06_03.html

        <!doctype html>
        <html ng-app="routeModule">
        <head>
            <meta charset="UTF-8">
            <title>ch06_03</title>
            <script src="/angular-1.5.5/angular.js"></script>
            <script src="/angular-1.5.5/angular-route.js"></script>
        </head>
        <body>
            <div>
                <a href="#/view1">view1</a> <a href="#/view2">view2</a>
            </div>
            <div ng-view></div>
            <script type="text/ng-template" id="/view1.html">
                <h1>View1内容<h1>
            </script>
            <script type="text/ng-template" id="/view2.html">
                <h1>View2内容<h1>
            </script>
            <script>
                var routeModule = angular.module('routeModule', ['ngRoute'])
                routeModule.config(['$routeProvider',
                    function($routeProvider){
                        $routeProvider.
                          when('/view1', {
                            templateUrl: '/view1.html'
                          }).
                          when('/view2', {
                            templateUrl: '/view2.html'
                          })
                  }]);
            </script>
        </body>
        </html>

在上面的案例中,我们通过<script>标签和ng-template指令定义了两个视图模板,id属性分别为/view1.html和/view2.html。

        <script type="text/ng-template" id="/view1.html">
            <h1>View1内容<h1>
        </script>
        <script type="text/ng-template" id="/view2.html">
            <h1>View2内容<h1>
        </script>

路由的定义和前面介绍的相同,templateUrl为<script>标签的id属性。

        routeModule.config(['$routeProvider',
            function($routeProvider){

            $routeProvider.
                    when('/view1', {

            templateUrl: '/view1.html'
                    }).
                    when('/view2', {

            templateUrl: '/view2.html'
                    })
          }]);

在浏览器中预览ch06_03.html,效果如图6.5所示。

图6.5 ng-template指令使用案例

单击view1、view2链接,视口中显示对应<script>标签中定义的视图内容。从中可以看出使用ng-template同样能够达到多视图切换效果。