AngularJS 路由以及模块配置

<!DOCTYPE html>
<html lang="en" ng-app="App">
<head>
	<meta charset="UTF-8">
	<title>AngularJS 路由-参数,模块配置,布局模板</title>
	<style>
		body {
			padding: 0;
			margin: 0;
			background-color: #F7F7F7;
			font-family: Arial;
		}

		.wrapper {
			max-width: 980px;
			margin: 50px auto;
		}

		ul {
			padding: 0;
			margin: 0;
			overflow: hidden;
			list-style: none;
			background-color: #000;
			border-radius: 4px;
		}

		li {
			float: left;
			width: 120px;
			height: 40px;
			text-align: center;
			line-height: 40px;
			font-size: 18px;
		}

		li.active {
			background-color: #333;
		}

		li a {
			display: block;
			color: #FFF;
			text-decoration: none;
		}

		.content {
			margin-top: 30px;
			font-size: 24px;
			padding: 0 20px;
		}
	</style>
</head>
<!--
	路由:
		一个应用是由若个视图组合而成的,根据不同的业务逻辑展示给用户不同的视图 ,路由则是实现这一功能的关键.
		
		在后端开发中通过URL地址可以实现页面(视图)的切换,但是AngularJS是一个纯前端MVC框架,
		在开发单页面应用时,所有功能都在同一页面完成,所以无需切换URL地址(即不允许产生跳转),
		但Web应用中又经常通过链接(a标签)来更新页面(视图),当点击链接时还要阻止其向服务器发起请求,
		通过锚点(页内跳转)可以实现这一点。
	
	路由参数:
		1、提供两个方法匹配路由,分别是when和otherwise,when方法需要两个参数,
			otherwise方法做为when方法的补充只需要一个参数,其中when方法可以被多次调用。
		2、第1个参数是一个字符串,代表当前URL中的hash值。
		3、第2个参数是一个对象,配置当前路由的参数,如视图、控制器等。
			a、template 字符串形式的视图模板
			b、templateUrl 引入外部视图模板
			c、controller 视图模板所属的控制器
			d、redirectTo跳转到其它路由
		4、获取参数,在控制中注入$routeParams可以获取传递的参数
		
		
	SPA:(Single Page Application)指的是通单一页面展示所有功能,
			通过Ajax动态获取数据然后进行实时渲染, 结合CSS3动画模仿原生App交互,
			然后再进行打包(使用工具把Web应用包一个壳, 这个壳本质上是浏览器)变成一个“原生”应用。
		在PC端也有广泛的应用,通常情况下使用Ajax异步请求数据,然后实现内容局部刷新,
			局部刷新的本质是动态生成DOM,新生成的DOM元素并没有真实存在于文档中,
			所以当再次刷新页面时新添加的DOM元素会“丢失”,通过单页面应可以很好的解决这个问题
			
	SPA(单页面应用条件):
		1、只有一页面
		2、链接使用锚点
		
	hashchange:	
		AngularJs实现单一页面可以通过hashchange事件监听到锚点的变化,
			进而可以实现为不同的锚点准备不同的视图,单页面应用就是基于这一原理实现的。
		AngularJS对这一实现原理进行了封装,将锚点的变化封装成路由(Route),这是与后端路由的根本区别。
		
-->
<body>
	<div class="wrapper">
		<!-- 导航菜单 -->
		<ul>
			<li class="active">
				<a href="#/index">Index</a>
			</li>
			<li>
				<a href="#/introduce">Introduce</a>
			</li>
			<li>
				<a href="#/contact">Contact Us</a>
			</li>
			<li>
				<a href="#/list">List</a>
			</li>
		</ul>
		<!-- 内容 -->
		<div class="content">
			<!--4 布局模板 占位符 -->
			<div ng-view></div>
		</div>

	</div>
	<!-- AngularJS核心框架 -->
	<script src="./libs/angular.min.js"></script>
	<!-- 1 路由模块理解成插件 -->
	<script src="./libs/angular-route.js"></script>
	<script>
	
		//2 实例化模块(App)时,当成依赖传进去(模块名称叫ngRoute)
		var App = angular.module('App', ['ngRoute']);

		//3 配置路由模块,使其正常工作
		App.config(['$routeProvider', function ($routeProvider) {

			$routeProvider.when('/index', {
				// template: '<h1>index Pages!</h1>',
				templateUrl: './abc.html'
			})
			.when('/introduce', {
				template: '<h1>introduce Pages!</h1>'
			})
			.when('/contact', {
				// template: '<h1>contact US Pages!</h1>',
				templateUrl: './contact.html',
				controller: 'ContactController' // 定义控制器
			})
			.when('/list', {
				templateUrl: './list.html', // 视图模板
				controller: 'ListController' // 定义控制器
			})
			.otherwise({
				redirectTo: '/index'
			});

		}]);

		// 列表控制器
		App.controller('ListController', ['$scope', '$http', function ($scope, $http) {
			// 模型数据
			// $scope.items = ['html', 'css', 'js'];

			$http({
				url: 'xxx.php',
			}).success(function (info) {
				$scope.items = info; //php 返回值['html', 'css', 'js'];
			});

		}]);

		App.controller('ContactController', ['$scope', '$http', function ($scope, $http) {

			$http({
				url: 'contact.php'
			}).success(function (info) {
				$scope.content = info;
			});

		}]);

	</script>

</body>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AngularJS 路由是用于在单页应用程序中实现页面导航的机制。它允许你根据 URL 的变化加载不同的视图和控制器,而无需刷新整个页面。 要使用 AngularJS 路由,首先需要在你的应用程序中引入 `angular-route.js` 文件。然后,在你的应用程序模块中注入 `'ngRoute'` 依赖,以便使用路由功能。 在配置路由之前,你需要定义不同的视图和控制器。视图是 HTML 模板,控制器是 JavaScript 函数,用于处理视图的逻辑。 配置路由时,你可以使用 `$routeProvider` 提供的方法来定义不同的路由规则。例如,使用 `.when()` 方法可以定义特定 URL 对应的视图和控制器,使用 `.otherwise()` 方法指定默认路由。 下面是一个简单的 AngularJS 路由示例: ```javascript angular.module('myApp', ['ngRoute']) .config(function($routeProvider) { $routeProvider .when('/home', { templateUrl: 'views/home.html', controller: 'HomeController' }) .when('/about', { templateUrl: 'views/about.html', controller: 'AboutController' }) .otherwise({ redirectTo: '/home' }); }) .controller('HomeController', function($scope) { // HomeController 的逻辑代码 }) .controller('AboutController', function($scope) { // AboutController 的逻辑代码 }); ``` 在上述示例中,我们配置了两个路由规则:`/home` 和 `/about`,它们分别对应了 `HomeController` 和 `AboutController`。当 URL 匹配到对应的路由时,AngularJS 会自动加载相应的视图和控制器。 希望以上回答能够解决你的问题。如果你还有其他问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值