ui路由---实际案例操作(首页 登录 注册 商品列表)

今天给大家详细操作一下ui路由怎么用:

实现多个页面跳转 楼主实现了4个功能的页面:首页 登录 注册 商品列表

第一步:

首先要做好文件夹,文件夹内需要的东西都添加好 如下图:

                             

 30shop-ui路由是大文件

 把项目文件构建好

 

 第二步

 接下来写的是index的内容 要记住先引入需要的各种库:

 记住别忘记引入ui-router.js

 

<!DOCTYPE html>
<html ng="myShop">
	<head>
		<meta charset="UTF-8">
		<title>ui路由</title>
		<link rel="stylesheet" href="js/lib/bootstrap-3.3.7-dist/css/bootstrap-min.css" />
		<script src="js/lib/angular.min.js"></script>             
		<script src="js/lib/angular-ui-router.min.js"></script>
		
		<script src="component/main/main.module.js"></script>
		<script src="component/login/login.module.js"></script>
		<script src="component/regist/regist.module.js"></script>
		<script src="component/goodslist/goodslist.module.js"></script>
		
		<script src="js/app/app.module.js"></script>
	</head>
	<body>
	</body>
</html>

第三步

编写index内容  body里的代码:

<body>
		<div class="container-fluid">
			<header>
				<div class="page-header">
					<h1>我的商城<small>Angular案例学习及总结</small></h1>
				</div>
			</header>
		</div>
		<div class="container">
			<div class="row">
				<div class="col-md-12">
					<ul class="nav nav-tabs nav-justified navbar-default">
						<li><a ui-sref="index">首页</a></li>
						<li><a ui-sref="login">登录</a></li>
						<li><a ui-sref="regist">注册</a></li>
						<li><a ui-sref="search">搜索</a></li>
						<li><a ui-sref="shopcart">购物车</a></li>
						<li><a ui-sref="order">订单</a></li>
					</ul>
				</div>
			</div>
			<div class="row content">
				<div ui-view></div>
			</div>
			<div class="row">
				<footer>
					<ul class="list-inline">
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
						<li><a href="#">友情链接</a></li>
					</ul>
				</footer>
			</div>
		</div>
	</body>

 效果如下 把简单的页面写了一下  头部-内容-底部:

 

第四步

因为楼主知道自己的项目构造,就直接在主js里直接注入,小伙伴们如果不是很了解自己的项目,可以先写其他页面,再来写大的js部分

这里面涉及到跨域访问的设置白名单用法

$sceDelegateProvider:数据安全验证代理服务提供者

$resourseUrlWhitelist:用于设置白名单

$stateProvider: 服务,可以为控制器或服务提供url的各个部分


var app=angular.module("myShop",[
"ui-router","main","login","regist","goodslist"
]);

/* 这里用于配置路由信息和跨域的白名单信息 */
app.config(["$sceDelegateProvider","$urlRouterProvider","$stateProvider",
function($sceDelegateProvider,$urlRouterProvider,$stateProvider){
	//跨域白名单设置
	$sceDelegateProvider.resourceUrlWhitelist([
		"self",
		"http://datainfo.duapp.com/**"  //*前面都一样 列出来		
	])
	
	//一级路由配置
	$stateProvider
	.sate({ /*首页*/
		name:"index",
		url:"/index",
		template:"<main-comp></main-comp>"
	})
	.state({
		name:"index.classlist",
		url:"/classlist",
		template:"<lists-comp></lists-comp>",
		params:{
			classID:null
		}
	})
	.state({ /*登录*/
		name:"login",
		url:"/login",
		template:"<login-comp></login-comp>"
	})
	.state({ /*注册*/
		name:"regist",
		url:"/regist",
		template:"<regist-comp></regist-comp>"
	});
	
	// 配置打开默认访问页面
	$urlRouterProvider.otherwise("/index");
}]);

第五步

登录页面:

html代码:

<div class="row box-login">
	<div class="col-md-6 col-md-offset-3">
		<form class="form-horizontal">
			<div class="form-group">
			    <label for="username" class="col-sm-2 control-label">账号</label>
			    <div class="col-sm-10">
			       <input type="text" class="form-control" ng-model="username" id="username" placeholder="请输入您的账号">
			    </div>
			</div>
			<div class="form-group">
			    <label for="password" class="col-sm-2 control-label">密码</label>
			    <div class="col-sm-10">
			       <input type="password" class="form-control" ng-model="password" id="password" placeholder="请输入您的密码">
			    </div>
			</div>
		    <div class="form-group">
			    <div class="col-sm-offset-2 col-sm-10">
			       <button type="submit" ng-click="loginFn()" class="btn btn-primary">登录</button>
			    </div>
		    </div>
        </form>
	</div>
</div>
<style type="text/css">
	.box-login{
		padding-top:50px;
	}
</style>

js代码:

var login=angular.module("login",[]);
login.component("loginComp",{
	templateUrl:"component/login/login.template.html",
	controller:["$scope","$http",function($scope,$http){
		$scope.loginFn=function(){
			$http({
				method:"GET",
				url:" http://datainfo.duapp.com/shopdata/userinfo.php",
				params:{
					status:"login",
					userID:$scope.username,
					password:$scope.password
				}
			}).then(
				function success(resp){
					console.log("请求成功",resp);
					if(resp.date instanceof Object){
						console.log("登录");
						locationStorage.setItem("loginUser",Object);   //记录用户

						$location.path("/index"); 
					}
				},
				function error(resp){
					console.log("系统繁忙");
				}
			);
		}
		
	}]
});


效果如下:


第六步

注册页面  注册和登录页面一样 就不啰嗦了~


第七步

主页面:把商品列表展示出来:

<div class="row content-main">
	<div class="col-md-3">
		<ul class="list-group">
			<li class="list-group-item" ng-repeat="c in classlist">
				<a ui-sref=".classlist({classID:c.classID})">
					<span ng-bind="c.className"></span>
				</a>
			</li>
		</ul>
	</div>
	<div class="col-md-9 box-main">
		<div ui-view></div>
	</div>
</div>

<style type="text/css">
	.content-main{
		padding-top: 20px;
		width: 1100px;	
	}
	.box-main{
		padding: 10px;
		border:1px solid #efefef; 
	}
</style>


js代码:

var main=angular.module("main",[]);
main.component("mainComp",{
	templateUrl:"component/main/main.template.html",
	controller:["$scope","$http",function($scope,$http){
		$http({
			method:"GET",
			url:"http://datainfo.duapp.com/shopdata/getclass.php",			
		}).then(
			function(resp){
				console.log("请求成功",resp);
				$scope.classlist=resp.data; //商品类型列表
			},
			function(resp){
				console.log("系统繁忙");
			}
		)
	}]
});


效果如下:





第八步

点击左边获取的商品,获取相对应的商品列表

这里用到自定义过滤器,因为页面中显示的商品名称太长,影响美观,所以就用了自定义过滤器。


<div class="row">
	<div class="col-sm-6 col-md-4" ng-repeat="g in goodslist">
		<div class="thumbnail thumbnail-goodslist">
			<img ng-src="{{g.goodsListImg}}" alt="{{g.goodsName}}"/>
		    <div class="caption">
		    	<p>
		    	   <span ng-bind="g.goodsName | formatGoodsName:15"></span>
		    	</p>
		        <p>
		        	<span ng-bind="g.price |currency:'¥'"></span>
		        </p>
		        <p>
		        	<a href="#" class="btn btn-primary" role="button">立即购买</a>
		            <a href="#" class="btn btn-danger" role="button">加入购物车</a>
		        </p>
		    </div>
		</div>
	</div>
</div>
<style type="text/css">
	.thumbnail-goodslist>img{
        width:150px;
        height:150px;
    }
</style>


js代码:

var goodslist=angular.module("goodslist",[]);
goodslist.component("listsComp",{
	templateUrl:"component/goodslist/goodslist.template.html",
	controller:["$scope","$http","$stateParams",function($scope,$http,$stateParams){
		$http({
			method:"JSONP",
			url:"http://datainfo.duapp.com/shopdata/getGoods.php",
			params:{
				classID:$stateParams.classID
			}
		}).then(
			function(resp){
				console.log("请求成功",resp);
				$scope.goodslist=resp.data;
			},
			function(resp){
				console.log("请求失败",resp);
			}
		);
		
	}]
});
goodslist.filter("formatGoodsName",function(){
	return function(value,num){
		if(value==""){
			return "";
		}
		value=value.substring(0,num);
		return value;
	}
})

效果如下:




这样一整个项目小开发就做出来了,小伙伴们可以看看最后运行的结果是什么样的。

当我们在项目开发的时候,用到多页面开发时,ui路由还是很重要的,有什么问题一起来探讨哇!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值