angular UI-Router 示例二

    基于第一个示例,我们再深入学习一下稍微复杂点的东西。

一、要实现的效果如下所示:

     index.html

angular UI-Router 示例二_第1张图片


       about.html

angular UI-Router 示例二_第2张图片

     可以看出,我们需要使用路由来切换到不同的视图。ui-router提供了让我们可以做路由嵌套和视图命名的特性,在接下来的示例中我们将逐一分析。

二、代码实现部分

  1. 我们需要一个显示模板作为页面显示的容器,因此新建index.html
    <!DOCTYPE html>
    <html>
    <head>
     <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    <script src="js/angular.js"></script>
    <script src="js/bootstrap.js"></script>
    <script src="js/angular-ui-router.js"></script>
    <script src="js/app.js"></script>
    <script src="js/controllers.js"></script>
    </head>
    <!-- apply our angular app to our site -->
    <body ng-app="routerApp">
        <!-- NAVIGATION -->
        <nav class="navbar navbar-inverse" role="navigation">
            <div class="navbar-header">
                <a class="navbar-brand" ui-sref="#">AngularUI Router</a>
            </div>
            <ul class="nav navbar-nav">
                <li><a ui-sref="home">Home</a></li>
                <li><a ui-sref="about">About</a></li>
            </ul>
        </nav>
        <div class="container">
            <div ui-view=""></div>
        </div>
    
    </body>
    </html>

    这里面用到了bootstrap的相关知识,大致看一下就明白了,一些所有的内容显示都在container中

  2. 导入各个js文件如第一步所示

  3. 新建app.js文件,进行视图状态配置。
    var routerApp = angular.module('routerApp', ['ui.router','controllers']);
    
    routerApp.config(function($stateProvider, $urlRouterProvider) {
    
      $urlRouterProvider.otherwise('/home');
    
      $stateProvider
    
        .state('home', {
          url: '/home',
          templateUrl: 'home.html'
        })
    
        // home页下的内嵌视图list(当点击ui-sref=".list"会路由到此)
        .state('home.list', {
          url: '/list',
          templateUrl: 'home-list.html',
          controller:'Controller'
        })
    
        // home页下的内嵌视图paragraph (当点击ui-sref=".paragraph")
        .state('home.paragraph', {
          url: '/paragraph',
          template: 'I could sure use a scoop of ice-cream. '
        })
    <pre class="prettyprint php"><code><span class="indent">    </span><span class="comment">// view 用在该状态下有多个 ui-view 的情况,可以对不同的 ui-view 使用特定的 template, controller, resolve data</span></code>
        .state('about', {
          url: '/about',
          views: {
            '': { templateUrl: 'about.html' },
            'columnOne@about': { template: '<p>This is columnOne show area !! </p>' },
            'columnTwo@about': { 
              templateUrl: 'table-data.html',
              controller: 'Controller'
            }
          }
    
        });
    
    });
    
    
     
    补充:绝对 view 使用 '@' 符号来区别,比如 'foo@bar' 表明名为 'foo' 的 ui-view 使用了 'bar' 状态的模板(template),相对 view 则无


  4. 自定义控制器 controllers.js
    //自定义控制器
    var myContrl= angular.module('controllers', []);
    myContrl.controller('Controller', function($scope) {
    
      $scope.message = 'test';
    
      $scope.topics = [
        {
          name: 'Butterscotch',
          price: 50
        },
        {
          name: 'Black Current',
          price: 100
        },
        {
          name: 'Mango',
          price: 20
        }
      ];
    
    });
    这里面没有什么特殊的,就是用它来提供数据的。

  5. 新建home.html
    <!-- 巨幕:这是一个轻量、灵活的组件,它能延伸至整个浏览器视口来展示网站上的关键内容。 --> 
    <div class="jumbotron text-center">
      <h1>Home</h1>
      <p>This page demonstrates <span class="text-danger">nested</span> views.</p>
      <a ui-sref=".list" class="btn btn-primary">List</a>
      <a ui-sref=".paragraph" class="btn btn-danger">Paragraph</a>
    </div>
    <div ui-view></div>
    该页面下的ui-view 就是视图的嵌套,分别用来显示home-list.html 和app.js中定义的模板内容。
  6.  新建home-list.html
    <ul>
        <li ng-repeat="topic in topics">{{ topic.name }}</li>
    </ul>
    从控制器中取数据,遍历输出。

  7. 新建about.html
    <div class="jumbotron text-center">
        <h1>The About Page</h1>
        <p>
            This page demonstrates <span class="text-danger">multiple</span> and <span class="text-danger">named</span> views.
        </p>
    </div>
    <div class="row">
    
        <div class="col-sm-6">
            <div ui-view="columnOne"></div>
        </div>
        <div class="col-sm-6">
            <div ui-view="columnTwo"></div>
        </div>
    </div>


  8. 新建table-data.html
    <h2>Ice-Creams</h2>
    <table class="table table-hover table-striped table-bordered">
      <thead>
        <tr>
          <td>Name</td>
          <td>Cost</td>
        </tr>
      </thead>
      <tbody>
    
        <tr ng-repeat="topic in topics">
          <td>{{ topic.name }}</td>
          <td>${{ topic.price }}</td>
        </tr>
    
      </tbody>
    </table>

三、项目结构图如下

       angular UI-Router 示例二_第3张图片


   

      累屎我了哭~欢迎大家提出修改、批评、更改意见奋斗


你可能感兴趣的:(Angular,bootstrap)