引言
AngularJS作为一款流行的JavaScript框架,在单页面应用(SPA)的开发中扮演着重要角色。其中,AngularJS的路由机制是实现页面跳转和数据共享的关键。本文将深入探讨AngularJS路由的艺术,帮助开发者轻松掌握页面跳转与数据共享技巧。
AngularJS路由基础
1. 路由简介
AngularJS路由机制是由ngRoute模块提供,它允许我们将视图分解成布局和模板视图,根据URL变化动态地将模板视图加载到布局中,从而实现单页面应用的页面跳转功能。
2. URL与Hash片段
在单页WEB应用的URL中添加了#号,#号代表着网页的一个位置,其右边的所有内容就是用来标识该位置的标识符。#号及后面的内容称为URL中的hash片段,它们都不会发送到服务端。
3. 路由使用
- 引入文件并注入依赖
由于从1.2版本开始,AngularJS已经将ngRoutes从核心代码中剥离出来成为独立的模块。因此,我们需要安装并在模块声明中注入对ngRoute的依赖,才能在AngularJS应用中正常地使用路由功能。
<script src="angular-route.min.js"></script>
var app = angular.module("myApp", ['ngRoute']);
- 创建一个布局模板
创建布局模板是为了告诉AngularJS应该将布局渲染到何处。通过ng-view指令,我们可以精确地指定模板视图在DOM中的渲染位置。
<div ng-app="myApp">
<a ng-href="#/music">音乐</a>
<a ng-href="#/movie">电影</a>
<div ng-view></div>
</div>
页面跳转与数据共享
1. 基于ui-router的页面跳转传参
在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的producer页,同时将producerId这个参数传过去。
.state('producers',
url: '/producers',
templateUrl: 'views/producers.html',
controller: 'ProducersCtrl'
)
.state('producer',
url: '/producer/:producerId',
templateUrl: 'views/producer.html',
controller: 'ProducerCtrl'
)
在producers.html中,定义点击事件,比如ng-click=“toProducer(producerId)“,在ProducersCtrl中,定义页面跳转函数(使用ui-router的state.go接口):
.controller('ProducersCtrl', function (scope, state) {
scope.toProducer = function (producerId) {
state.go('producer', {producerId: producerId});
};
});
在ProducerCtrl中,通过ui-router的stateParams获取传递的参数:
.controller('ProducerCtrl', function ($scope, $stateParams) {
$scope.producerId = $stateParams.producerId;
});
2. 使用ngRoute进行页面跳转
使用ngRoute进行页面跳转时,可以通过routeProvider服务配置路由映射。
var app = angular.module("myApp", ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider
.when('/', {
controller: 'homeCtrl',
templateUrl: '../view/home.html'
})
.when('/reservation', {
controller: 'reservationCtrl',
templateUrl: '../view/reservation.html'
})
.otherwise({
redirectTo: '/'
});
});
在页面中,写入URL跳转的按钮链接以及ng-view标签:
<div ng-app="myApp">
<a href="#/home">首页</a>
<a href="#/reservation">预订</a>
<div ng-view></div>
</div>
总结
AngularJS路由机制为开发者提供了强大的页面跳转和数据共享功能。通过本文的介绍,相信开发者已经对AngularJS路由有了更深入的了解。在实际项目中,灵活运用路由机制,可以轻松实现页面跳转与数据共享,提高开发效率。