Именованные представления
Иногда вам нужно отобразить несколько представлений одновременно вместо их вложенности, например, создание макета с sidebar представлением и main представлением. Именно здесь пригодятся именованные представления. Вместо одного единственного выхода в вашем представлении, вы можете иметь несколько и дать каждому из них имя. router-view без имени получит default в качестве своего имени.
<router-view class="view one"></router-view>
<router-view class="view two" name="a"></router-view>
<router-view class="view three" name="b"></router-view>
Представление отображается с помощью компонента, поэтому для одного маршрута требуются несколько компонентов. Убедитесь, что вы используете опцию components (с буквой s):
const router = new VueRouter({
routes: [
{
path: '/',
components: {
default: Foo,
a: Bar,
b: Baz
}
}
]
})
Демонстрационный пример этого примера можно найти здесь.
Вложенные именованные представления
Возможно создание сложных макетов с использованием именованных представлений и вложенных представлений. При этом вам также потребуется назначить имена вложенным router-view компонентам. Рассмотрим пример панели настроек:
/settings/emails /settings/profile
+-----------------------------------+ +------------------------------+
| UserSettings | | UserSettings |
| +-----+-------------------------+ | | +-----+--------------------+ |
| | Nav | UserEmailsSubscriptions | | +------------> | | Nav | UserProfile | |
| | +-------------------------+ | | | +--------------------+ |
| | | | | | | | UserProfilePreview | |
| +-----+-------------------------+ | | +-----+--------------------+ |
+-----------------------------------+ +------------------------------+
-
Nav— это обычный компонент -
UserSettings— это компонент представления -
UserEmailsSubscriptions,UserProfile,UserProfilePreview— это вложенные компоненты представления
Примечание: Давайте забудем о том, как HTML/CSS должен выглядеть для представления такого макета, и сосредоточимся на используемых компонентах.
Раздел <template> для компонента UserSettings в вышеупомянутом макете будет выглядеть примерно так:
<!-- UserSettings.vue -->
<div>
<h1>User Settings</h1>
<NavBar/>
<router-view/>
<router-view name="helper"/>
</div>
Вложенные компоненты представления здесь опущены, но полный исходный код для примера выше можно найти здесь.
Затем вы можете получить вышеуказанный макет с помощью этой конфигурации маршрута:
{
path: '/settings',
// You could also have named views at the top
component: UserSettings,
children: [{
path: 'emails',
component: UserEmailsSubscriptions
}, {
path: 'profile',
components: {
default: UserProfile,
helper: UserProfilePreview
}
}]
}
Демонстрационный пример этого примера можно найти здесь.
© 2013–present Evan You
Licensed under the MIT License.
https://router.vuejs.org/guide/essentials/named-views.html