@DmitryWL

Можно ли распространить мета теги ("гарды") на все дочерние компоненты/страницы в vue-router?

Добрый день уважаемые. Часто на Вашем сайте находил полезные решения для своих небольших разработок, но сейчас настала пора попросить совета.

Пытаюсь освоить vue.js в связке с laravel. Суть вопроса. Можно ли не прописывать в каждом дочернем элементе мета теги - requireAuth и т.д.?

{
      name:'admin',
      path:'/admin',
      component:admin,
       meta: { requiresAuth: true , adminAuth:true , userAuth : false},
       children: [
        {
          name:'test1',
          path:'test1',
          component:test1,
          //  meta: { requiresAuth: true , adminAuth:true , userAuth : false}
        },
        {
          name:'test2',
          path:'test2',
          component:test2,
          meta: { requiresAuth: true , adminAuth:true , userAuth : false}
        },
      ]
    },


Хотелось бы конечно в родительском /admin прописать что требуется роль Админа, а не плодить строки.
Заранее благодарен.
  • Вопрос задан
  • 106 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Можно ли не прописывать в каждом дочернем элементе мета теги - requireAuth и т.д.?

Можно:

совпавшие записи маршрутов оказываются доступны через объект $route (а также через объекты маршрутов в сторожевых хуках), в виде массива $route.matched. Таким образом, для проверки метаданных в записях маршрутов нам понадобится обойти $route.matched в цикле.

Ну и дальше там пример кода есть ещё (кстати, как раз проверка необходимости авторизации).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DmitryWL Автор вопроса
0xD34F большое спасибо, видел и не раз, но не совсем корректно применил.
to.matched.some(record => record.meta.requiresAuth вместо to.matched.requiresAuth вроде бы решил вопрос.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы