Как добавить параметр поиска в URL с помощью AnglerJS UI Router.go()?
Есть ли способ добавить параметр поиска к URL-адресу при использовании UI-Router $state.go()
? Я хотел бы использовать определенное состояние с дополнительной информацией в URL вместо того, чтобы определять новый маршрут с той же конфигурацией.
У меня есть простой вид:
.when('page-with-form', {
template: 'views/page-with-form.html',
url: '/page-with-form'
})
Я хочу, чтобы маршрут работал нормально, когда кто-то переходил на /page-with-form
, но когда у меня есть что-то еще в приложении, которое перенаправляет пользователя на этот маршрут с некоторой дополнительной информацией /page-with-form?error=true
примерно так:
$state.go('page-with-form', '?error=true');
Ответы
Ответ 1
Это будет решение с ui-router
- рабочим примером
$stateProvider
.state('MyState', {
url: '/page-with-form?error',
templateUrl: 'view.page-with-form.html',
controller: 'MyCtrl',
})
Навигация в это состояние может быть таким:
// href
<a href="#/page-with-form">
<a href="#/page-with-form?error=true">
<a href="#/page-with-form?error=false">
//ui-sref
<a ui-sref="MyState({error:null})">
<a ui-sref="MyState({error:true})">
<a ui-sref="MyState({error:false})">
// state.go() - in fact very similar to ui-sref directive
$state.go('MyState', {error: null})
$state.go('MyState', {error: true})
$state.go('MyState', {error:false})
Документация по параметрам url:
Вы также можете указать параметры в качестве параметров запроса, следуя "?":
url: "/contacts?myParam"
// will match to url of "/contacts?myParam=value"
Протестируйте его в действии здесь
Ответ 2
Как я понимаю, вы ищете параметры запроса необязательный. К счастью, параметры запроса необязательны по умолчанию. Просто попробуйте: url: '/page-with-form?error'
.when('page-with-form', {
template: 'views/page-with-form.html',
url: '/page-with-form?error'
});
И используйте $state.go('page-with-form', {error:true});