[英]How to define defaults for query params in AngularJS UI-Router?
我有一條路線:
.state('list', {
url:'/list?query',
templateUrl: '/views/list.html',
controller: 'ListCtrl as vm'
})
有沒有辦法確保查詢的默認值?
我不想在控制器中執行此操作,因為我將同一控制器用於其他路由,並且如果query
未定義,則該控制器具有某些行為。
我想要的是用於默認query
特定路由。
在舊的角度路線中,我已經做了這種事情...
.when('/list',
templateUrl: '/views/list.html',
controller: 'ListCtrl'
controllerAs:true,
redirectTo:function(routeParams, path, search) {
if(!search.query) {
return "list?query=defaultSearch";
}
}
})
您可以在控制器加載之前使用onEnter方法執行邏輯。
從ui-router Wiki https://github.com/angular-ui/ui-router/wiki :
$stateProvider.state("contacts", {
template: '<h1>{{title}}</h1>',
resolve: { title: 'My Contacts' },
controller: function($scope, title){
$scope.title = title;
},
onEnter: function($location){
if($location){ ... do something ... }
}
})
我們可以使用稱為params
的設置。 有一個正在工作的矮人
.state('list', {
url:'/list?query',
templateUrl: 'views/list.html',
controller: 'ListCtrl as vm',
params: { query: 'DEFAULT VALUE' }, // here the default
})
這些鏈接將按預期工作
<a href="#/list?"> - with default 'query' value
<a href="#/list?query=someParam">
<a ui-sref="list({query:'theParam'})">
在這里檢查它的作用
詳細信息在這里討論:
如果我說對了,那么如果用戶請求的狀態與定義的任何狀態都不匹配,則需要進入一種狀態。
如果這是必需的,則嘗試使用$ urlRouterProvider的“ otherwise”方法
喜歡,
$urlRouterProvider.otherwise("/default-state");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.