angularjs:路由设置

本文介绍了AngularJS的路由设置,包括路由对象、ngView指令、$routeProvider的配置,以及如何通过不同模板实现页面切换。通过路由,可以在单页应用中实现多视图,并通过#标记区分逻辑页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mycrm项目登录后,进入index界面,设计成左边是一个菜单栏,右边作为一个详情页面,前端采用了angular后使用路由可以很好的解决这个问题;

图1-1



图1-2

具体设计看下面代码:

var aoorey= angular.module('aoorey', [ 'ngRoute','ui.bootstrap','aoorey.controller','aoorey.controller.base','aoorey.controller.blackList',
	'aoorey.controller.guide','aoorey.controller.user','aoorey.controller.order','aoorey.controller.coupons',
	'aoorey.controller.guideAccount','aoorey.controller.guidePunish','aoorey.controller.aooreyHome','aoorey.controller.carData',
	'aoorey.services','aoorey.services.final','aoorey.directives','xeditable' ])
.config([
	'$routeProvider','$httpProvider',
	function($routeProvider, $httpProvider) {
	    $routeProvider.when('', {
			templateUrl : 'test',
			controller : 'dashboard'
	    }).when('/dashboard', {
			templateUrl : 'test',
			controller : 'dashboard'
	    }).when('/menu', {
			templateUrl : 'menu/menu',
			controller : 'menuCtl'
	    }).when('/userRole', {
			templateUrl : 'userRole/role',
			controller : 'userRoleCtl'
	    }).otherwise({

redirectTo : 'dashboard'

    });


当登录后,springmvc跳转到index页面,index页面中使用了ng-view

		
		<div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2 main" ng-view>			
			
			
		</div>	<!--/.main-->
		

刚登录后不发请求,默认的走路由的.otherwise,进入设置的dashboard页面然后走springmvc的页面跳转


@RequestMapping(value = "/dashboard")
	public String dashboard() {
		return "dashboard";
	}
	@RequestMapping(value = "/test")
	public String test() {
		return "test";
	}



图1-3

下面跟上文档

AngularJS 路由允许我们通过不同的 URL 访问不同的内容。

通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。

通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如:

http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third

当我们点击以上的任意一个链接时,向服务端请的地址都是一样的 (http://runoob.com/)。 因为 # 号之后的内容在向服务端请求时会被浏览器忽略掉。 所以我们就需要在客户端实现 # 号后面内容的功能实现。 AngularJS 路由 就通过 # + 标记 帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。


实例解析:

  • 1、载入了实现路由的 js 文件:angular-route.js。

  • 2、包含了 ngRoute 模块作为主应用模块的依赖模块。

    angular.module('routingDemoApp',['ngRoute'])
  • 3、使用 ngView 指令。

    <div ng-view></div>

    该 div 内的 HTML 内容会根据路由的变化而变化。

  • 4、配置 $routeProvider,AngularJS $routeProvider 用来定义路由规则。

    module.config(['$routeProvider', function($routeProvider){
        $routeProvider
            .when('/',{template:'这是首页页面'})
            .when('/computers',{template:'这是电脑分类页面'})
            .when('/printers',{template:'这是打印机页面'})
            .otherwise({redirectTo:'/'});
    }]);

AngularJS 模块的 config 函数用于配置路由规则。通过使用 configAPI,我们请求把$routeProvider注入到我们的配置函数并且使用$routeProvider.whenAPI来定义我们的路由规则。

$routeProvider 为我们提供了 when(path,object) & otherwise(object) 函数按顺序定义所有路由,函数包含两个参数:

  • 第一个参数是 URL 或者 URL 正则规则。
  • 第二个参数是路由配置对象。

路由设置对象

AngularJS 路由也可以通过不同的模板来实现。

$routeProvider.when 函数的第一个参数是 URL 或者 URL 正则规则,第二个参数为路由配置对象。

路由配置对象语法规则如下:

$routeProvider.when(url, {
    template: string,
    templateUrl: string,
    controller: string, function  array,
    controllerAs: string,
    redirectTo: string, function,
    resolve: object<key, function>
});

参数说明:

  • template:

    如果我们只需要在 ng-view 中插入简单的 HTML 内容,则使用该参数:

    .when('/computers',{template:'这是电脑分类页面'})
  • templateUrl:

    如果我们只需要在 ng-view 中插入 HTML 模板文件,则使用该参数:

    $routeProvider.when('/computers', {
        templateUrl: 'views/computers.html',
    });

    以上代码会从服务端获取 views/computers.html 文件内容插入到 ng-view 中。

  • controller:

    function、string或数组类型,在当前模板上执行的controller函数,生成新的scope。

  • controllerAs:

    string类型,为controller指定别名。

  • redirectTo:

    重定向的地址。

  • resolve:

    指定当前controller所依赖的其他模块。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值