angular路由操作

在单页面应用程序中比如angular应用,我们需要根据url的变化(即:不同的请求),来分配不同的资源。根据请求的URL来决定执行哪个模块,这个过程叫路由,同时,我们需要设计路由规则。

下面给出一个简单的小demo:

html结构:

<body ng-app=‘rootApp‘>
  <ul>
    <li><a href=‘#/‘>主页</a></li>
    <li><a href=‘#/floor1‘>一楼</a></li>
    <li><a href=‘#/floor2‘>二楼</a></li>
  </ul>
  <!-- ng-view 渲染站位 -->
  <div ng-view></div>
</body>
<!-- 引入angular包 -->
<script src=‘bower_components/angular/angular.js‘></script>
<!-- 引入angular-route包 -->
<script src=‘bower_components/angular-route/angular-route.js‘></script>
<!-- 下面是渲染模板 -->
<script id=‘tmpl‘ type=‘text/ng-template‘>
  <h1>{{placeholder}}</h1>
</script>

js结构:

  /* 此处定义模块,由于需要设定路由,所以要注入ngRoute */
  var rootApp = angular.module(‘rootApp‘, [‘ngRoute‘]);
  /* 定义路由表(路由规则)*/
  rootApp.config([‘$routeProvider‘, function($routeProvider) {
    /* $routeProvider 就相当于交通警察,根据when和otherwise指挥路由走向 */
    $routeProvider
      .when(‘/‘, {
        // 当请求的“URL” / , 找当前定义控制器和视图
        controller: ‘DefaultController‘,
        /* template: ‘<h1>{{hello}}</h1>‘ */
        templateUrl: ‘tmpl‘
      })
      .when(‘/floor1/1‘, {
        controller: ‘Floor1‘,
        templateUrl: ‘tmpl‘
      })
      /* 这里用:id这种形式来保存路由参数,以便后来用$routeParams可以取到 */
      .when(‘/floor2/:id/:name/:age‘, {
        controller: ‘Floor2‘,
        templateUrl: ‘tmpl‘
      })
      .otherwise({
        /* 都不匹配,定向到根目录 */
        redirectTo: ‘/‘
      });
  }]);

    // 定义相关控制器
    rootApp.controller(‘DefaultController‘, [‘$scope‘, function($scope) {
      $scope.placeholder= ‘当前为主页‘;
    }]);
    rootApp.controller(‘Floor1‘, [‘$scope‘, function($scope) {
      $scope.placeholder = ‘当前为1楼‘;
    }]);
    rootApp.controller(‘Floor2‘, [‘$scope‘, ‘$routeParams‘, function($scope, $routeParams) {
      /* $routeParams 用于解析请求参数 */
      console.log($routeParams);
      $scope.placeholder= ‘当前为2楼‘;
    }]);


总结: 
angular中的路由需要使用它的ngRoute模块,具体使用方法如上所示,其中路由表的设计是通过模块配置$routeProvider的when和otherwise来处理不同的请求参数。 
其中ng-view用于占坑,when中的template或者是templateUrl用于渲染控制层定义的数据,去填这个坑,其中路由参数是根据:parmName 来指定,通过$routeParams来解析参数。

时间: 2024-10-18 14:19:24

angular路由操作的相关文章

Angular路由的定义和使用

一.什么是routing(路由) Almost all non-trivial, non-demo Single Page App (SPA) require multiple pages. A settings page is different from a dashboard view. The login page is different from an accounts page(设置页面不同于控制页面,登录页面不同于账号信息页面....就是说一个应用很多功能不同的页面) 我们可以使

angular路由(自带路由篇)

一.angular路由是什么? 为了实现SPA多视图的切换的效果,其原理可简述为每个 URL 都有对应的视图和控制器.所以当我们给url后面拼上不同的参数就能通过路由实现不同视图的切换. 二.文件总览 1.新建文件 一级目录新建ngRoute.html(为主页面,里面进行路由配置) 一级目录新建view文件夹,里面再新建三个子页面aboutus.html,home.html,order.html 一级目录存放angular.js和angular-route.js文件,文件存放位置依自己喜好即可

angular路由详解:

1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 var app=angular.module('myApp',['ngRoute']); //配置angular路由//$routeProvider是ngRoute模块中的服务 app.config(function($routeProvider){ //when:第一个值是配置路由的名称,第二个

angular 路由去除#号

1.  路由启动          $locationProvider.html5Mode(true); app.js define([ 'angular', "App/Ctrl/controllers", "App/Directive/directive", "angularRoute" ], function (angular,controllers,directives,appDirec) { var app=angular.module(

Angular使用操作事件指令ng-click传多个参数示例

本文实例讲述了Angular使用操作事件指令ng-click传多个参数功能.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF-8"> <title>www.jb51.net angular ng-click用于操作事件的指令</title> <script src="a

【angular.js】UI-Router之angular路由学习

AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由 通常我们的URL形式为http://jtjds.cn/first/page,但在单页web应用中angularjs通过#+标记实现,比如下面的页面,将是下文中的路由列子. http://192.168.1.109:8000/angular-program/src/main.html#/pagetable/page1 http://192.168.

angular路由切换后的一些问题。

我们在使用angular的时候,路由总是最让人头疼的地方. 在这里给大家解决一些来回切换遗留下的小问题 比如我们在使用ng-route时主页面含有轮播图,当你切换到其他页面再切回主页面时会发现主页面的轮播图不会动. 对于这个问题我们要用到angular的一个指令 初始化 ng-init, html <div ng-init='init()'>路由过来的页面</div> //包含轮播图 这里说明一下,我的控制器写在body中,名为ctrl js var app = angular.m

Angular路由(三)

AngularJs ng-route路由详解 其实主要是$routeProvider搭配ng-view实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 前提 首先必须在页面引入angular.js和angular-route,注意在angular-route之前引入angular <script type="text/javascript" src="js/angular.min.js" ></script>

angular路由介绍

AngularJS路由功能是一个纯前端的解决方案,与我们熟悉的后台路由不太一样.后台路由,通过不同的URL会路由到不同的控制器上(controller),再渲染(render)到页面(HTML).AngularJS的前端路由,需求提前对指定的(ng-app),定义路由规则(routeProvider),然后通过不同的URL,告诉(ng-app)加载哪个页面(HTML),再渲染到(ng-app)视图(ng-view)中. AngularJS的前端路由,虽然URL输入不一样,页面展示不一样,其实完成