$stateProvider
.state('contacts.detail', {
// 這裡設定了url引數
url: "/contacts/:contactId",
templateUrl: 'contacts.detail.html',
controller: function ($stateParams) {
// If we got here from a url of /contacts/42
expect($stateParams).toBe({contactId: 42});
}
})
app.config(function($urlRouterProvider){
// when there is an empty route, redirect to /index
$urlRouterProvider.when('', '/index');
// You can also use regex for the match parameter
$urlRouterProvider.when('/aspx/i', '/index');
})
handler 作為 Function 如果handler是一個函式,這個函式是注入一些服務的。如果$location匹配成功,函式將被呼叫。你可以選擇性注入$match。
函式可以返回:
falsy 表明規則不匹配,$urlRouter將試圖尋找另一個匹配
String 該字串作為重定向地址並且作為引數傳遞給$location.url()
nothing或者任何為真的值,告訴$urlRouterurl 已經被處理
示例:
1
2
3
4
5
$urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {
if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {
$state.transitionTo(state, $match, false);
}
}]);
otherwise() 無效路由
引數:
pathString | Function 你想重定向url路徑或者一個函式返回url路徑。函式可以包含$injector和$location兩個引數。
1
2
3
4
5
6
7
8
9
10
app.config(function($urlRouterProvider){
// 在配置(狀態配置和when()方法)中沒有找到url的任何匹配
// otherwise will take care of routing the user to the specified url
$urlRouterProvider.otherwise('/index');
// Example of using function rule as param
$urlRouterProvider.otherwise(function($injector, $location){
... some advanced code...
});
})
app.config(function($urlRouterProvider){
// Here's an example of how you might allow case insensitive urls
$urlRouterProvider.rule(function ($injector, $location) {
var path = $location.path(), normalized = path.toLowerCase();
if (path != normalized) return normalized;
});
})