Как динамически перенаправить в Vue-роутер? - PullRequest
0 голосов
/ 26 августа 2018

У меня есть требование для маршрутизации, зависящей от местоположения. Структура сайта выглядит следующим образом:

home (перенаправляет на активностьТип с пройденным городом)

/ (root) 
|
|__:activityType
       |
       |____:city
              |
              |_______ /
              |
              | _______ /:itemName

в основном, www.home.com должен указывать на www.home.com/:activityType/:city и на этой странице пользователь может щелкнуть элемент для дальнейшей передачи на www.home.com/:activityType/:city/:itemName

Теперь я не уверен, как правильно структурировать vue-router, поскольку все, кроме жестко закодированных значений, возвращает мне 404 ошибки.

return new Router({
    mode: 'history',
    fallback: false,
    scrollBehavior: () => ({ y: 0 }),
    routes: [
      { path: '/', redirect: to => {
        const { params } = to
        if (!!params.activityType){
          params.activityType = 'music'
        } 
        if (!!params.city) {
          params.city = 'new-york'
        }
        return '/:activityType/:city'
      }},
      { path: '/:activityType', children: [
        { path: ''}, // similar redirect like from root
        { path: '/:city', name: 'venue-page', component: homepage, children: [
          { path: '/:item', component: venue}
        ]}
      ]},
    ]
})

Любая идея, как я могу получить желаемое поведение с homeroute, и, по сути, использовать мой homeroute в качестве запасного варианта?

...