$routeProvider
ngRoute 模块的服务
ngRoute 模块的服务
描述
用于配制路由。
方法:
-
otherwise(params) : 设置在没有其他路由匹配的情况下,将会被用到的路由定义。
-
when(path, route)
添加新的路由定义到$
route
服务.参数
参数 类型 细节 path 字符串 路由路径 (匹配
$location.path
)。如果$location.path
后面包含多余的 " / " 或者少了一个 "/ ",该路由将仍然能匹配 ,并且$location.path
将会相应的增加或减少后面的“ / ”。path
可以包含:name形式 。
当路由匹配的时候,从:到下一个/之间的全部接下来的字符串将保存在$routeParams中,并以
name为key
.path
可以以:开始,以 * 结束 (:name*
)。 当路由匹配的时候,所有的字符串都会被保存在$routeParams
中,并以name
为keypath
可以包含?号 (: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 不会被触发。