Я создаю панель администратора с Vuetify, которая защищена аутентификацией. По сути, мне нужно несколько макетов, потому что моему представлению входа в систему не нужны панель инструментов, боковая панель и т. Д. c.
Я создал PublicCenteredLayout для моего компонента входа
<template>
<v-container class="fill-height" fluid>
<v-row align="center" justify="center">
<v-col cols="12" sm="8" md="4">
<router-view></router-view>
</v-col>
</v-row>
</v-container>
</template>
и добавьте поле метатега в мой маршрут входа в систему
{
path: "/login",
component: Login,
meta: { layout: PublicCenteredLayout }
}
, и с помощью динамических c компонентов я отображаю правильный макет с помощью $route.meta.layout
. Как вы видите, в макете используются предопределенные столбцы <v-col cols="12" sm="8" md="4">
Я хотел бы знать, есть ли способ передать эту информацию в поле макета в качестве дополнительных значений. Псевдокод будет
meta: { layout: PublicCenteredLayout { sm:8, md:4 } }
, но это неверный синтаксис. Единственное решение, о котором я мог подумать, было бы
meta: {
layoutInfo: {
component: PublicCenteredLayout
// additional fields here
}
}
, чтобы я мог получить доступ к этим полям через $route.meta.layoutInfo.sm
. Это решение может быть не лучшим, потому что JavaScript предоставляет это значение, даже если оно не существует. С Vue 3 я хотел бы переключиться на TypeScript, и тогда я мог бы столкнуться с некоторыми ошибками.
Есть лучшие идеи для этого?