Подтвердить что ты не робот

Как добавить параметр поиска в 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');
4b9b3361

Ответ 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});