当前位置:/AngularJS API/ngRoute/供应者(Provider)/$routeProvider

$routeProvider是一个用于配置路由的内置服务。由于它是一个服务,根据service的使用建议,我们主要将其当做为工具来使用,所以我们一般直接使用$routeProvider.XXX来调用它的成员方法来实现一定的功能,而不是实例化一个$routeProvider的实例。它主要有以下两个成员函数:

  • otherwise(params):设定映射信息到$route.current,一般用于指定没有标明的路由如何处理。
  • when(path, route):向$route服务添加新的路由。path是指定的URL路径,route标明路由的处理。

示例

配置与ngRoute的使用参见$route


依赖

需要安装ngRoute模块


方法

when(path, route)

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

参数

参数名 类型 详细说明
path string

(匹配$location.path的)路由地址。如果$location.path包含多余的尾斜杠或少了一个,路由仍会匹配,$location.path将会更新,增减一个斜杠以匹配路由定义。

  • path可以包含以冒号开始的命名组(:name)。匹配到下一个斜杠为止的所有字符,并在路由匹配时以给定的名字存储到$routeParams中。
  • path可以包含以冒号开始,以星号结束的命名组(:name*)。在路由匹配时,所有字符都以给定名字贪婪存储到$routeParams中。
  • path可以包含可选的命名组,包含一个问号(:name?)。

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

  • color: brown
  • largecode: code/with/slashs.
route Object

路由匹配时将赋值给$route.current的映射信息。

Object属性:

  • controller – {(string|function()=} – 与新创建的scope关联的控制器函数,或一个已注册的控制器的名字。
  • controllerAs – {string=} – 一个控制器的别名。若存在,则控制器将被以controllerAs的名字发表给scope。
  • template – {string=|function()=} – 用于ngView或ngInclude指令的html模板。若为函数,则应返回一个代表html模板的字符串。该属性优先级大于templateUrl。若template是一个函数,则应以如下参数调用:{Array.<Object>}
  • templateUrl – {string=|function()=} – 用于ngView指令的html模板。若为函数,则应返回一个代表html模板的字符串。若templateUrl是一个函数,则应以如下参数调用:{Array.<Object>}
  • resolve - {Object.<string, function>=} - 注入控制器的可选依赖的映射。若任一依赖是promise(承诺),则在控制器被实例化之前,路由将等待他们全部resolved(解决),或被其中一个reject(拒绝)。若所有promise都成功resolve,则resolved promise的值将注入,并触发$routeChangeSuccess事件。若任一promise被reject,则触发$routeChangeError事件。映射Object为:key – {string},factory - {string|function}

    • key – {string}: 将被注入到控制器的依赖名。
    • factory - {string|function}: 若为字符串,则是服务的别名。若为函数,则被注入,且返回值被当作依赖。若结果为promise,则被resolve之后,将值注入到控制器中。请注意ngRoute.$routeParams在resolve时依然是前一个路由。使用$route.current.params访问新路由的参数。
  • redirectTo – {(string|function())=} – 更新$location path的值。

返回

[Object]自身



otherwise(params)

设置用于路由改变时,与任何其他路由定义无法匹配时使用的路由定义。

参数

参数名 类型 详细说明
params Object 将赋值给$route.current的映射信息

返回

[Object]自身