AngularJs 路由

风流意气都作罢 提交于 2020-01-20 02:45:45
router路由
	router路由是angularJs用于构建单页面应用的模块
	本质是从a标签点击跳转功能延展而来的
	
	**功能:主要实现一个页面的模块点击加载不同应用,如微信的底部导航栏上的页面,根据
	低部的点击,加载不同功能页面;如果qq,根据下面的导航,点击后上面的模块加载不同功能**

	(1)router功能的实现需要引入,angular.route.min.js
	(2)router功能的实现需要以来ng-view指令
		1、提供标注,放在哪哪个标签就作为容器,盛放不同页面的内容
	(3)router功能的实现需要a标签的href属性
		1、href='#要加载的页面代号'
		2、使得a标签点击时,通知路由加载哪一个页面
	(4)具体语法通过app页面数据模型创建的
		1、通过config方法构建一个路由
		2、在路由中,通过.when()来准备加载要加载的页面
		3、在路由种,通过.otherwise()来决定加载哪一个页面
			
			app模型.config(['$routeProvider',function($routeProvider){
				$routeProvider
				//页面准备加载
				.when('/页面代号即a标签的href#后的内容',{
					templateUrl:'要加载页面的url地址(以路由所在的位置为起点)',
					controller:'当前页面对应要加载的脚本即控制器名称'
				}).when(...)
				.otherwise({
				//默认加载的页面代号
					redirectTo:'/页面代号即a标签#后的href内容'
				})
			}])

	注意:
		(1)如果使用路由功能,在创建页面数据模型app的时候,必须要注入一条名为ngRoute的信息,相当于对当前页面声明要使用路由声明	
			var app=angular.module('app',['ngRoute'])
		(2)在承载不同页面的容器上记得不要忘记加载ng-view,否则路由选中的页面无法加载

代码示例:

<!DOCTYPE html>
<html ng-app='app' ng-controller='mainController'>
<head lang="en">
	<meta charset='utf-8'/>
	<title ng-bind='mainTitle'></title>
</head>
<body>

<!-- <ul ng-controller='showNameController'>
	<li ng-repeat='pname in pnames track by $index'>{{pname}}</li>
</ul> -->

<!-- <div ng-controller='showInfoController'>
	<div ng-repeat='info in infos track by $index'>
		<h2>{{info.username}}</h2>
		<p>{{info.password}}</p>
	</div>
</div> -->

<ul>
	<li><a href="#showname">姓名列表显示</a></li>
	<li><a href="#showinfo">信息列表显示</a></li>
</ul>
<div style="width:300px; height:300px; border:1px solid black;" ng-view></div>

<script src="js/angular.js"></script>
<script src="js/angular.route.min.js"></script>
<script>

	//路由文件
	var app = angular.module('app', ['ngRoute']);
	app.config(['$routeProvider', function ($routeProvider){
		$routeProvider
			.when('/showname', {
				//因为表示要加载的内容,所以只需要写需要加载的标签内容,不需要写html结构
				templateUrl:'showname.html',
				controller:'showNameController'
			})
			.when('/showinfo', {
				templateUrl: 'showinfo.html',
				controller:'showInfoController'
			})
			.otherwise({
				//会默认加载到ng-view中
				redirectTo:'/showname'
			});
	}]);



	app.controller('mainController', ['$scope', function ($scope){
		$scope.mainTitle = 'lesson1_路由router';
	}]);
	app.controller('showNameController', ['$scope', function ($scope){
		$scope.pnames = ['frank','lily','lucy'];
	}]);
	app.controller('showInfoController', ['$scope', function ($scope){
		$scope.infos = [
			{ username:'frank', password:'123456' },
			{ username:'zoe', password:'654321' }
		];
	}]);
</script>
</body>
</html>

showname.html:

<li ng-repeat='pname in pnames track by $index'>{{pname}}</li>

showinfo.html:

<div ng-repeat='info in infos track by $index'>
			<h2>{{info.username}}</h2>
			<p>{{info.password}}</p>
</div>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!