1. 程式人生 > >第26篇:AngularJS+ui-router實現一個超簡單的登陸和跳轉的二級路由demo

第26篇:AngularJS+ui-router實現一個超簡單的登陸和跳轉的二級路由demo

1.頁面結構介紹:


1)index.html:頁面入口檔案;

2)views資料夾下:

login資料夾下:登陸頁面和對應控制器;

home資料夾下:

home.html/home.js:二級路由頁面和對應的控制器

adv/list資料夾:二級頁面和對應的控制器檔案

3)lib資料夾:引入的框架檔案

4)common資料夾:公共樣式和指令碼等檔案

2.定義路由

入口檔案index/index.html

引入angularJS框架,對應的iu-router外掛和oclazyload懶載入外掛;

定義ng-app指令;

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
	<meta charset="UTF-8">
	<title>NTDATA</title>
	<link rel="stylesheet" href="common/css/style.css">
	<script src="lib/angular.min.js"></script>
	<script src="lib/angular-ui-router.min.js"></script>
	<script src="lib/ocLazyLoad.min.js"></script>
	<script src="common/script/main.min.js"></script>
</head>
<body>
	<ui-view></ui-view>			
</body>
</html>

路由檔案index/common/script/main.js:

依賴注入對應的模組,定義一級路由和子路由,壓縮後在index.html頁面引入

'use strict';
var app = angular.module('app', ['ui.router','oc.lazyLoad']);
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
	$urlRouterProvider.otherwise('home');
	$stateProvider
		.state('login',{
			url:'/login',
			templateUrl:'./views/login/login.html',
			controller:'login',
			resolve:{
				loadMyCtrl:['$ocLazyLoad', function($ocLazyLoad) {
			        return $ocLazyLoad.load('./views/login/login.js');
			    }]
			}
		})
		.state('home',{
			url:'/home',
			templateUrl:'./views/home/home.html',
			controller:'home',
			resolve:{
				loadMyCtrl:['$ocLazyLoad', function($ocLazyLoad) {
			        return $ocLazyLoad.load('./views/home/home.js');
			    }]
			}
		})
		.state('home.advList',{
			url:'/advertiser',
			templateUrl:'./views/home/adv/list/list.html',
			controller:'advList',
			resolve:{
				loadMyCtrl:['$ocLazyLoad', function($ocLazyLoad) {
			        return $ocLazyLoad.load('./views/home/adv/list/list.js');
			    }]
			}
		})
		.state('home.chList',{
			url:'/channel',
			templateUrl:'./views/home/channel/list/list.html',
			controller:'chList',
			resolve:{
				loadMyCtrl:['$ocLazyLoad', function($ocLazyLoad) {
			        return $ocLazyLoad.load('./views/home/channel/list/list.js');
			    }]
			}
		})
}])

二級路由入口頁面index/views/home.html
<div>
	<span ui-sref=".advList"><a href="">adv</a></span>
	<span ui-sref=".chList"><a href="">channel</a></span>
	<span ui-sref="login"><a href="">登出</a></span>
	<div ui-view=""></div>
</div>
對應的控制器index/views/home.js
angular.module('app').controller('home',['$state',function($state){
	$state.go('home.advList');
}])
其他子頁面和對應的控制器
adv/list/list.html:
<div>
	advList
</div>

adv/list/list.js:
angular.module('app').controller('advList',['$scope',function($scope){
	
}])
channel/list/ist.html:
<div>
	channelList
</div>

channel/list/list.js:
angular.module('app').controller('chList',['$scope',function($scope){
	
}])


3.效果欣賞