【发布时间】:2020-01-10 20:02:26
【问题描述】:
我有一个 vue 项目:
App.vue
layouts
---- DefaultLayout.vue
views
---- Home.vue
---- About.vue
....
DefaultLayout.vue:
<template>
<span>
<div class="change">
<slot/>
</div>
<b-container>
<router-view></router-view>
</b-container>
</span>
</template>
<script>
export default {
name: "DefaultLayout"
};
</script>
Home.vue:
<template>
<div>
<div class="change">
<h1>Default layout</h1>
</div>
<h2>Default Layaout > Home</h2>
<router-link :to="{ name: 'Intro', params: { id: intro }}">intro</router-link>
</div>
</template>
<script>
import DefaultLayout from "../layouts/DefaultLayout";
export default {
name: "Home",
components: {
DefaultLayout
}
};
</script>
关于.vue:
<template>
<div class="change">
<h2>Default Layaout > About</h2>
</div>
</template>
<script>
import DefaultLayout from "../layouts/DefaultLayout";
export default {
name: "about",
components: {
DefaultLayout
}
};
</script>
重点是为页面(视图)进行总体布局,但能够更改特定块 (class = "change")。对于 home,一个内容,对于 about,另一个,但是页面的一般框架。
现在:
<div id="app">
<span>
<div class="change"></div>
<div class="container">
<div>
<div class="change">
<h1>Default layout</h1>
</div>
<h2>Default Layaout > Home</h2>
<a href="#/" class="router-link-active">intro</a>
</div>
</div>
</span>
</div>
它应该是(没有双重change):
<div id="app">
<span>
<div class="container">
<div>
<div class="change">
<h1>Default layout</h1>
</div>
<h2>Default Layaout > Home</h2>
<a href="#/" class="router-link-active">intro</a>
</div>
</div>
</span>
</div>
问题:如何用slot(在某个地方不同的插入)为app vue视图(页面)格式化布局(页面的通用模板框架)?
【问题讨论】: