关于angularjs的UI-Router使用

这是一个菜鸟的日志,大牛可以忽略。

去年接触了angularjs,在一些项目上用到以后觉得很好用,同时也有很多疑问,其中一个就是今天想写的东西:关于页面的切分后如何跳转,如何引用的问题。

刚写完一个demo,记录一下。

angular-ui-router :多层次嵌套路由,可以把一个应用切成很多的小块来,然后用路由来跳转:

首先,准备一个页面容器,也就我们常说的index.html,把需要引用的东西都引用进来,顺便把布局也弄了

<!DOCTYPE html>
<html lang="en" ng-app="routerApp">
<head>
	<meta charset="UTF-8">
	<link rel="stylesheet" href="css/bootstrap-3.0.0/css/bootstrap.css">
	<script src="js/angular-1.3.0.js"></script>
	<script src="js/angular-ui-router.js"></script>
	<script src="app.js"></script>
</head>
<body>
	<nav class="navbar navbar-inverse" role="navigation">
		<div class="navbar-header">
			<a href="#" class="navbar-brand">Angular UI Router</a>
		</div>
		<ul class="nav navbar-nav">
			<li><a ui-sref="home">主页</a></li>
			<li><a ui-sref="about">about</a></li>
		</ul>
	</nav>

	<!-- main content -->
	<div id="mainContent" class="container">
		<div ui-view></div>
	</div>
	
</body>
</html>

到这里,我们的主页面就弄完了,

然后开始写app.js

/*初始化模块,引入ui-router 模块*/
var routerApp = angular.module('routerApp', ["ui.router"]);

routerApp.config(function($stateProvider,$urlRouterProvider) {
	$urlRouterProvider.otherwise('/home');

	$stateProvider
		.state('home',{
			url:'/home',
			templateUrl:'home_page.html'
		})

		.state('about',{
			/*about 的内容*/
		})


})

在创建一个home_page.html

<div class="jumbotron text-center">
	<h1>主页</h1>
	<p> 这是一个<span class="text-danger">嵌套</span> views,Demo</p>
</div>

这个代码片段会在家在#mainContent中,

浏览器(firefox)打开index.html

153446_fkGx_2699666.png

ok 继续,既然是一个嵌套view,我们就可以在home_page中再加一层ui-view 嵌套

<div class="jumbotron text-center">
	<h1>主页</h1>
	<p> 这是一个<span class="text-danger">嵌套</span> views,Demo</p>
	<a class="btn btn-primary" ui-sref=".list">列表</a>
	<a class="btn btn-danger" ui-sref=".otherlink">其他</a>
</div>

<div ui-view></div>

继续修改 app.js

/*初始化模块,引入ui-router 模块*/
var routerApp = angular.module('routerApp', ["ui.router"]);

routerApp.config(function($stateProvider,$urlRouterProvider) {
	$urlRouterProvider.otherwise('/home');

	$stateProvider
		.state('home',{
			url:'/home',
			templateUrl:'home_page.html'
		})
		.state('home.list',{
			templateUrl:'home_page_list.html',
			url:'/list',
			controller:function($scope){
				$scope.names=['小强','旺财','阿里拉'];
			}
		})
		.state('home.otherlink',{
			url:'/otherlink',
			template:'跳转过来就这些内容了'
		})

		.state('about',{
			/*about 的内容*/
		})


})

增加一个代码片段home_page_list.html

<ul>
	<li ng-repeat="name in names">{{name}}</li>
</ul>

刷新页面,可以看到效果了

154848_yYHo_2699666.png

接下来,再来写一个多视图的about页

创建about页代码片段

<div class="jumbotron text-center">
    <h1>The About Page</h1>
    <p>演示<span class="text-danger">多个</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="columnTow"></div>
	</div>
</div>

修改app.js

/*初始化模块,引入ui-router 模块*/
var routerApp = angular.module('routerApp', ["ui.router"]);

routerApp.config(function($stateProvider,$urlRouterProvider) {
	$urlRouterProvider.otherwise('/home');

	$stateProvider
		.state('home',{
			url:'/home',
			templateUrl:'home_page.html'
		})
		.state('home.list',{
			templateUrl:'home_page_list.html',
			url:'/list',
			controller:function($scope){
				$scope.names=['小强','旺财','阿里拉'];
			}
		})
		.state('home.otherlink',{
			url:'/otherlink',
			template:'跳转过来就这些内容了'
		})

		.state('about',{
			url:'/about',
			views:{
				'':{templateUrl:'about_page.html'},
				'columnOne@about':{template:'一个view的东西'},
				'columnTow@about':{
					templateUrl:'about_page_table.html',
					controller:'aboutCtrl'
				}
			}
		})
})

routerApp.controller('aboutCtrl', ['$scope', function($scope){

	$scope.items = [
        {
            name: '阿黄',
            price: 50
        },
        {
            name: 'XX小强',
            price: 10000
        },
        {
            name: '奥斯卡',
            price: 20000
        }
    ];

	
}])

新增home_page_list代码片段

<h2>表格</h2>
<table class="table table-hover table-striped table-bordered">
    <thead>
        <tr>
            <td>名称</td>
            <td>价格</td>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="item in items">
            <td>{{ item.name }}</td>
            <td>${{ item.price }}</td>
        </tr>
        
    </tbody>
</table>

ok,

可以看到效果

160530_pI1j_2699666.png

 

到这里一个关于UI-Router的demo 写完了,

总的来说,还是比较简单,可能有一些深层次的东西没有感受到。

代码地址:http://pan.baidu.com/s/1i46OBD7

 

 

转载于:https://my.oschina.net/u/2699666/blog/849589

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值