Ссылка динамического маршрутизатора изменяется * косая черта * на% 2F - PullRequest
0 голосов
/ 02 июля 2019

У меня небольшая проблема с динамическим соединением маршрутизатора.Я получил массив объектов (страниц) из API, и один из них - мой home:

{
    name:"dynamic"
    parent_id:0
    partners:null
    slug:"/"
}

, затем с помощью v-for я хочу создать router-link следующим образом:

<div v-for="page in pages">
    <router-link
      :to="{ name: page.name, params: { slug: page.slug }}"
      class="v-list__link"
    >
</div>

Проблема в том, что, когда я отображаю страницу, эта ссылка на home не <a href="/">, как я ожидал, но с конечной ссылкой: %2F => <a href="%2F">

router.js

export default new Router({
  scrollBehavior (to, from) {
    return { x: 0, y: 0 }
  },
  mode: 'history',
  routes: [
    {
      path: '/:slug',
      name: 'dynamic',
      component: Dynamic
    },
    {
      path: '/',
      name: 'dynamic',
      component: Dynamic
    },
    {
      path: '/contact',
      name: 'contact',
      component: Contact
    }
  ]
})

кто-нибудь знает, как ее решить?

1 Ответ

0 голосов
/ 02 июля 2019

Маршрут маршрута /:slug. При разрешении с slug, равным /, вы получите // в качестве окончательного пути, за исключением того, что он будет разрешен до /%2F, поскольку параметры будут закодированы с помощью encodeURIComponent.

Удалить ведущий слеш из параметра slug:

page.slug.replace(/^\//, '')

У вас также есть два маршрута с одинаковым именем, это не разрешено. Второй маршрут dynamic не может быть разрешен по имени.

...