TL; DR: возможно ли передать содержимое в определенный слот компонента, указанного в родительском компоненте, из дочернего компонента?
Я использую шаблон Vue Webpack , который поставляется с Vue Router , который обеспечивает основу для одностраничного приложения из коробки.
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть основной макет, упрощенный ниже:
<template>
<div id="app">
<Nav/>
<APageWithDifferentNav/>
</div>
</template>
<script>
import Home from "./components/views/Home";
import APageWithDifferentNav from "./components/views/APageWithDifferentNav";
import Nav from "./components/Nav";
export default {
name: "App",
components: {
Nav, Home, APageWithDifferentNav
}
};
</script>
И компонент nav примерно такой:
<template>
<div class="nav">
<ul class="nav__list">
<li class="nav__list-item">always show this nav item</li>
</ul>
<slot>
<ul class="nav__list replace-this">
<li class="nav__list-item">only show this</li>
<li class="nav__list-item">if no slot</li>
<li class="nav__list-item">content provided</li>
</ul>
</slot>
</div>
</template>
<script>
export default {
name: "Nav"
};
</script>
Я хочу иметь возможность изменить слот внутри компонента Nav
из компонента представления.
Например, при оформлении заказа или входящего потока вы хотите ограничить опции навигации, отображаемые для пользователя, и поменять местами другой контент, чтобы выделить место, где он находится в пути.
Могу ли я сделать это, не перемещая <Nav/>
внутри шаблона каждой страницы?
Я собрал более углубленный пример кода, чтобы показать, что я, после которого вы можете посмотреть здесь.
Любая помощь очень ценится.