angular $routeProvider

本文深入解析Angular中的ngRoute模块,详细介绍了$routeProvider服务的使用方法,包括otherwise、when、resolve等核心功能及参数说明,旨在帮助开发者高效配置路由,提升应用的导航体验。

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

$routeProvider

ngRoute 模块的服务

描述

用于配制路由。

方法:
  • otherwise(params) : 设置在没有其他路由匹配的情况下,将会被用到的路由定义。


    参数
    参数 类型 细节
    params json

    Mapping 信息to be assigned to $route.current.

    返回
    对象

    本身

  • when(path, route)

    添加新的路由定义到$route 服务.

    参数
    参数 类型 细节
    path 字符串

    路由路径 (匹配 $location.path )。如果 $location.path 后面包含多余的 " / " 或者少了一个 "/ ",该路由将仍然能匹配 ,并且 $location.path 将会相应的增加或减少后面的“ / ”。

    • path 可以包含 :name形式 。 当路由匹配的时候,从:到下一个/之间的全部接下来的字符串将保存在 $routeParams中,并以 name为key.
    • path 可以以:开始,以 * 结束 (:name*)。 当路由匹配的时候,所有的字符串都会被保存在$routeParams 中,并以 name 为key
    • path 可以包含?号 (:name?).

    例如,路由 /color/:color/largecode/:largecode*\/edit 将会匹配 /color/brown/largecode/code/with/slashs/edit 并且提取出:

    • color: brown
    • largecode: code/with/slashs.
    route 对象

    路由正确时,绑定到$route.current 的映射信息。

    对象属性:

    • controller – {( 字符串或函数 } – 与新创建出来的scope相结合的控制器函数或已注册控制器的名称。
    • controllerAs – {字符串} – controller别名. 如果当前的 controller 将以一个别名被发布到 scope 
    • template – {字符串或函数 } – html 字符串模板或者一个返回html字符串模板的函数,改字符串将被用到 ngView 或 ngInclude 指令。这个属性优先级高于 templateUrl.

      如果 template 是一个函数,将会需要下面的参数:

      • {Array.<Object>} - 当前的$location.path() 提取出来的route 参数
    • templateUrl – {字符串或函数} – 路径或一个返回路径的函数 ,改路径指向一个 用于 ngView html 模板。

       resolve functions

      • {Array.<Object>} -  当前的$location.path() 提取出来的route 参数
    • resolve - {Object.<string, function>=} - 一个可选的需要被注入到 controller中的依赖的映射.。如果其中的任何依赖是promises, 路由将等待他们被

      resolved 或 rejected ,再实例化 controller。如果全部的promises 都 resolved 了, resolved promises 的值将被注入并且触发 $routeChangeSuccess 事件。如果有一个 promises 被 rejected 了,将触发 $routeChangeError 事件。该对象为:

      • key – {字符串}:注入到controller中的依赖的名字。
      • factory - {字符串|函数}:如果是字符串,那么该字符串是一个服务的别名。如果是一个函数,那么他将被注入并返回一个值作为依赖。如果结果是一个 promise,他将在注入控制器之前被 resolved。注意 ngRoute.$routeParams 在这些 resolve 函数中仍然指向前一个route。使用 $route.current.params  获取新的路由
    • redirectTo – {(字符串|或函数 )=} – 用来更新 $location path 的值,并触发重定向。

      如果 redirectTo 是一个函数,将需要下面这些参数:

      • {Object.<string>} - 应用当前路由templateUrl是,当前$location.path()提成出来的路由参数。
      • {string} - 当前$location.path()
      • {Object} - 当前$location.search()

      自定义的redirectTo 函数必须返回一个字符串用于更新 $location.path() 和 $location.search().

    • [ reloadOnSearch = true]: $location.search() 或 $location.hash() 改变时重新加载路由.

      如果设置成 false ,当浏览器的url改变时, $routeUpdate 事件从root scope广播.

    • [ caseInsensitiveMatch = false ] : 不区分大小写的情况下匹配路由


    返回
    对象

    本身



      angular.module('ngView', [],
        function($routeProvider){
          $routeProvider.when('/test',
            {
              template: '{{}}',
              controller: function(){
                $('div').first().html('<b>OK</b>');
              }
            }
          );
        }
      );
    

    那个空的 template 不能省,否则 controller 不会被触发。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值