基于第一个示例,我们再深入学习一下稍微复杂点的东西。
index.html
about.html
可以看出,我们需要使用路由来切换到不同的视图。ui-router提供了让我们可以做路由嵌套和视图命名的特性,在接下来的示例中我们将逐一分析。
<!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>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'
}
}
});
});
//自定义控制器
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
}
];
});这里面没有什么特殊的,就是用它来提供数据的。<!-- 巨幕:这是一个轻量、灵活的组件,它能延伸至整个浏览器视口来展示网站上的关键内容。 --> <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中定义的模板内容。
<ul>
<li ng-repeat="topic in topics">{{ topic.name }}</li>
</ul>从控制器中取数据,遍历输出。<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><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>三、项目结构图如下
累屎我了
~欢迎大家提出修改、批评、更改意见
!
原文地址:http://blog.csdn.net/u010834071/article/details/45198009