Можно ли установить конкретные реквизиты VueRouter? - PullRequest
0 голосов
/ 02 апреля 2019

Работая с VueRouter, я хочу разрешить доступ к этим URL:

  • category/apple
  • category/banana
  • category/pear

Можно ли ограничить параметр маршрутизатора определенными строками?(банан, яблоко, груша)?

Я не могу найти в документации ничего конкретно по этому поводу.и я погуглил, чтобы найти некоторые другие решения, которые не работают:

{
    path:       'category/:categoryType',
    props:      true, 
    /*props: {
        validator: function (value) {
            return ( value === 'banana' || value === 'apple' || value === 'pear');
        }
    },*/
    component:  someComponent
},

Единственное решение, о котором я могу подумать сейчас, - это проверить это в created() внутри компонента.

1 Ответ

1 голос
/ 02 апреля 2019

Я думаю, что этот код является решением вашего случая:

const allowedCategoryNames = ['apple', 'banana', 'pear'];
const categoryRoutePath = '/category/:categoryName(' + allowedCategoryNames.join('|') + ')';
{
    path:       categoryRoutePath,
    props:      true,
    component:  someComponent
},

, и в вашем компоненте вы можете получить текущее милое имя, например:

const currentCategory = this.$route.params.categoryName;

Это должно работать =)Некоторые примеры можно найти здесь: Примеры регулярного выражения vue-router

...