ngRoute

ngRoute 模块中包含以下内容,

名称 所属 作用
ngView DIRECTIVE 提供不同路由模板插入的视图层
$routeProvider PROVIDER 提供路由配置
$route SERVICE 用于构建各个路由的url、view、controller这三者的关系
$routeParams SERVICE 解析返回路由中带有的参数
  1. 在主模板中使用 ngView 定义一个路由模板的视图层。不同路由对应的模板将会插入到这个 ngView 所在的dom元素下。
  2. 使用 $routeProvider 进行路由配置,包括每一个路由对应的url,template以及controller。除了这些基本的配置之外,还会有一些额外的配置,比如 resolve 配置等。
  3. 在每个路由的controller中完成对应的业务逻辑。
  4. 可以通过注入 $routeParams 服务来获取路由url上的参数;还可以通过 $rootScope 来监控 $routeChangeStart 和 $routeChangeSuccess 事件。
<body ng-app="demo001" ng-controller="Demo">
    <h1>Angular Route Demo</h1>
    <hr>
    <div>
        <a href="#/home">home</a>
        <a href="#/post">post</a>
        <a href="#/about">about</a>
    </div>
    <hr>
    <div ng-view></div>
</body>
angular.module(‘demo001‘, [‘ngRoute‘])
.config([
    ‘$routeProvider‘,
    function ($routeProvider) {
        $routeProvider
            .when(‘/home‘, {
                templateUrl: ‘home.html‘,
                controller: ‘HomeController‘
            })
            .when(‘/post‘, {
                templateUrl: ‘post.html‘,
                controller: ‘PostController‘
            })
            .when(‘/about‘, {
                templateUrl: ‘about.html‘,
                controller: ‘AboutController‘
            })
            .otherwise(‘/home‘)
    }
])

调用 $routeProvider.when 来配置不同路由的具体信息。 $routeProvider.when 方法接受2个参数,第一个是路由的url。第二个路由的具体配置,包括对应的模板地址,控制器名称等.$routeProvider.otherwise 可以用于设置默认路由地址。简单来说就是将未设置的url自动重定向到此url。

路由参数

angular.module(‘Module.Post‘, [‘ngRoute‘])

.config([
    ‘$routeProvider‘,
    function ($routerProvider) {
        $routerProvider
            .when(‘/post‘, {
                templateUrl: ‘post.html‘,
                controller: ‘PostController‘
            })
            .when(‘/post/:postId‘, {
                templateUrl: ‘post-id.html‘,
                controller: ‘PostIdController‘
            })
    }
])

.controller(‘PostController‘, [
    ‘$scope‘,
    function ($scope) {
        $scope.posts = [
            {
                name: ‘post1‘,
                id: ‘post-001‘
            }, {
                name: ‘post2‘,
                id: ‘post-002‘
            }
        ]
    }
])

.controller(‘PostIdController‘, [
    ‘$scope‘,
    ‘$routeParams‘,
    function ($scope, $routeParams) {
        $scope.msg = ‘post id: ‘ + $routeParams.postId;
    }
]);

路由中的 /:postId 其实是一个参数,它将匹配类似 /post/001 这种url,其中001 就是这个 :postId 的值。

我们在路由对应的控制器中,可以通过 $routeParams 参数来获取这个url参数。依次类推,我们可以为路由的url设置多个参数,比如 /post/:year/:month/:day/:postName 这样的路由,它将匹配 /post/2015/12/15/angular-router-demo 这样的路径。控制器中注入的 $routeParams 服务将会得到类似下面的对象,

{
    "year": 2015,
    "month": 12,
    "day": 15,
    "postName": "angular-router-demo"
}

http://www.tuicool.com/articles/jqMveaB

时间: 2024-10-12 20:45:37

ngRoute的相关文章

ui-router详解(二)ngRoute工具区别

我们了解 angular.js 是一种富客户端单页面应用,所以要在一个页面呈现不同的视图,路由起到了至关重要的作用. angular.js 为我们封装好了一个路由工具 ngRoute ,它是一种靠url改变去驱动视图. angularUI 也为我们封装了一个独立的路由模块 ui-router ,它是一种靠状态 state 来驱动视图. 后者有什么优势:一个页面可以嵌套多个视图,多个视图去控制某一个视图等. ngRoute 使用时需要ui中用ng-view指令指定 如:<div ng-view>

ngRoute+ngAnimate与JQM中的页面跳转的区别

1.ngRoute+ngAnimate与jQM中的页面跳转有何异同? 相同点: (1)完整的HTML只需要一个 (2)使用异步AJAX请求获取下一个页面 (3)可以实现转场动画 不同点: (1)ngRoute需要配置路由字典:jQM没有,更加灵活 (2)ngRoute访问路由地址的格式——特殊格式的hash http://xxx/index.html#/main jQM访问页面地址——普通的URL http://xxx/tpl/main.html (3)ngRoute访问的路由页面可以使用F5刷

野兽的Angular Api 学习、翻译及理解 - - ngRoute Angular自带的路由

野兽的ng api学习 -- ngRoute ngRoute $routeProvider 配置路由的时候使用. 方法: when(path,route); 在$route服务里添加一个新的路由. path:该路由的路径. route:路由映射信息. controller:字符串或函数,指定控制器. controllerAs:一个用于控制器的标识符名称.. template:字符串或函数,html模板. templateUrl:字符串或函数,html模板的地址. resolve:对象,一个可选的

AngularJs ng-route路由详解

本篇基于ng-route来讲下路由的使用...其实主要是 $routeProvider 搭配 ng-view 实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 更多内容参考:Angularjs总结 前提 首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular <script src="../../bower_components/angular/angular.js"></

AngularJS学习笔记(三) 单页面webApp和路由(ng-route)

就我现在的认识,路由($route)这个东西(也许可以加上$location)可以说是ng最重要的东西了.因为angular目前最重要的作用就是做单页面webApp,而路由这个东西是能做到页面跳转的关键. 1.单页面webApp 为什么叫单页面webApp?因为它是单页面的....额...关键在于我们看到的不少webApp是多页面的啊,可以从一页跳到另一页.嗯,看起来是这样,不过实际上这几页实际还是一个页面,因为它们是一次性加载进来的,至于为啥会有跳转效果呢?嗯,有点儿像选项卡,嗯.其实现原理在

angular ngRoute小例子

ngRoute学习小例子 单页面应用中可以使用ng-view,当修改ng-view的template时可以实现一个页面html中展示不同内容(div部分). 例如index.html中包含ng-view 1 <!DOCTYPE HTML> 2 <html ng-app="app"> 3 <head> 4 <script src="./bower_components/angular/angular.js"></s

angularjs 路由 ngRoute tab切换

<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script src="angular.min.js"></scrip

AngularJs练习Demo17 ngRoute

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <script src="../Scri

AngularJs练习Demo16 ngRoute

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title></title> 6 <meta charset="utf-8" /> 7 <script src="../Scrip

Angular学习(十六)——ngRoute

ngRoute简介 路由是angularjs很重要的一环,它可以把你项目的页面串联起来,构成一个项目,常用的路由有ngRoute和ui-route,我这里先讲ngRoute.ngRoute是一个Module,提供路由和深层链接所需的服务和指令. 注意一点,和之前的文章不一样,使用ngRoute之前你需要引入另外一个js文件angular-route.js: <script src="script/angular.min.js"></script> <scr