路由如何连接到页面

时间:2016-08-16 20:06:40

标签: angularjs

我正在尝试用书和一些例子来学习角度,并且我有一些困难时期试图理解ng-view如何知道基于路由系统显示的视图。

所以这是一个例子:

<!DOCTYPE html>
<html ng-app="maintenance">
<head>
  <title>Dive Sites</title>
  <link href="./lib/bootstrap/bootstrap.min.css" rel="stylesheet" />
  <link href="./site.css" rel="stylesheet" />
</head>
<body ng-controller="adminCtrl">
  <!-- Navigation header -->
  <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
    <div class="container">
      <button type="button" class="navbar-toggle collapsed" 
              data-toggle="collapse"
              data-target="#adminMenu">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">
        Younderwater Admin
      </a>
      <div class="collapse navbar-collapse" id="adminMenu">
        <ul class="nav navbar-nav">
          <li ng-class="{active: isActive('Locations')}">
            <a href="#/locations">Locations</a>
          </li>
          <li ng-class="{active: isActive('Sites')}">
            <a href="#/sites">
              Dive Sites
            </a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <!-- Optional title bar -->
<div class="current-spot">
    <div class="container-fluid" >
      <div class="container">
        <div ng-show="view=='locations'">
          <h3>Manage the list of diving locations</h3>
        </div>
        <div ng-show="view=='diveSites'">
          <h3>Manage the list of dive sites</h3>
        </div>
      </div>
    </div>
  </div>

  <!-- View content -->
  <div class="main-content">
    <div class="container-fluid">
      <div class="container">
        <div ng-view></div>
      </div>
    </div>
  </div>

  <script src="./lib/jquery/jquery.min.js"></script>
  <script src="./lib/bootstrap/bootstrap.min.js"></script>
  <script src="./lib/angular/angular.min.js"></script>
  <script src="./lib/angular/angular-route.min.js"></script>
  <script src="maintenance.js"></script>
</body>
</html>

SCRIPT

angular.module('maintenance', ['ngRoute'])
.controller('adminCtrl', AdminCtrl)
  .config(function ($routeProvider) {
    $routeProvider.when('/locations', {
      templateUrl: 'views/locations.html'
    });
    $routeProvider.when('/sites', {
      templateUrl: 'views/sites.html'
    });
    $routeProvider.otherwise({
      templateUrl: 'views/main.html'
    });
  });

function AdminCtrl($scope) {
}

我需要知道我是否有正确的思考方式,看这个例子,我会说'#'表示要使用路由系统,在脚本中我们设置路由和app应加载的视图在网址上,当我按下基于路由系统的#it搜索并将视图传递给ng-view时,我不知道处理是否正确,这就是为什么我需要更好地理解它是如何工作的,对不起,如果我没解释得很好:/

Ps:抱歉我的英文不好

1 个答案:

答案 0 :(得分:0)

首先,angular.module(&#39; maintenance&#39;,....)必须匹配。我指的是标识符&#39; maintenance&#39;。如果没有这个,您的JS文件将无法找到您的HTML文件。

从JS文件中,您有angular.module(&#39; maintenance&#39;,[&#39; ngRoute&#39;]),ngRoute是路由的角度指令。

https://docs.angularjs.org/api/ngRoute

$ routeProvider说明要去的页面。

http://www.w3schools.com/angular/angular_routing.asp

templateUrl显示页面的URL。

https://docs.angularjs.org/guide/directive

http://techfunda.com/howto/505/function-with-templateurl

我非常确定您的项目中有以下html文件。

locations.html

sites.html

main.html中