Маршрутизатор VueJS espace "&" char затем приводит к ошибкам - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь сделать разделяемый URI моего приложения, я работаю с vue router 3.

Проблема в том, что я получаю доступ к своему приложению по маршруту, подобному

localhost:8000/foo?param1=yeaa&param2=yeaa2

Этот URI перехватывается маршрутизатором vue, но преобразуется в

localhost:8000/logs?param1=yeaa&amp%3Bparam2=yeaa2

Затем, когда я пытаюсь получить доступ к параметрам запроса, используя

router.query.param1 // it works
router.query.param2 // it fail and return undefined

Фактически, когда я проверяю внутри Vue, devtools можетпосмотрите, что vue router думает, что вторым параметром является amp;param2

$route
  path:"/logs"
  query:Object
    amp;param2:"yeaa2"
    param1:"yeaa"
  params:Object (empty)
  fullPath:"/logs?param1=yeaa&amp%3Bparam2=yeaa2"
  meta:Object (empty)

Это немного скучно, и мне не удалось найти в vue router doc, если есть опция / config, чтобы избежать этого.

К вашему сведению, когда я получаю доступ к одному и тому же URI с тем же параметром, используя router-link, эта проблема исчезла.

Есть ли способ избежать экранирования этого символа в конфигурации vue router (возможно, нехорошо проинформирован в документе) или с ванильным JS?

Если нет, я думаю, что это проблема Vue Router.

РЕДАКТИРОВАТЬ

Есть гдеЯ создаю маршрут

{
component: Log,
path: '/logs',
props: route => ({
  oldQueryOptions: {
    absoluteTimeRangeFrom: route.query.absoluteTimeRangeFrom,
    absoluteTimeRangeTo: route.query.absoluteTimeRangeTo,
    query: route.query.query,
    rangeKeyword: route.query.rangeKeyword,
    relativeTimeRange: route.query.relativeTimeRange,
    type: route.query.type,
  },
}),
},
...