Vue.JS 组件未出现
Vue.JS Component Not Appearing
我试图在 Vue 路由器仪表板页面上使用 Vue Material,但我试图将面板存储在一个单独的文件中。我完全不知道为什么这不起作用,我花了最后 2 个小时在谷歌上搜索这个问题,但我什么也没有。即使使用 Vue chrome 扩展也不会显示它,这排除了样式。在组件上放置红色背景颜色确实有效,但仍然无效。另外,请原谅我的错误代码——我已经使用 Vue 大约 3 天了。
<template>
<div class="page-container md-layout-row">
<md-app>
<md-app-toolbar class="md-primary">
<span class="md-title">{{ usernameTitleCase }}</span>
</md-app-toolbar>
<PagePanel></PagePanel>
<md-app-content>
<div class="user">
<h1>{{ user.username }}</h1>
<h2>{{ user.customThing }}</h2>
<h3>{{ user.id }}</h3>
</div>
</md-app-content>
</md-app>
</div>
</template>
<script>
import PagePanel from '@/components/panel.vue';
export default {
name: 'Dashboard',
components: {
PagePanel
},
data() {
return {}
},
computed: {
usernameTitleCase() {
const letters = this.user.username.split('');
letters[0] = letters[0].toUpperCase();
return letters.join('')
}
},
created() {
this.user = JSON.parse(localStorage.getItem('user'));
}
}
</script>
<style>
.md-app {
min-height: 350px;
}
.md-drawer {
width: 230px;
max-width: calc(100vw - 125px);
}
</style>
此处的组件文件:
<template>
<md-app-drawer md-permanent="full">
<md-toolbar class="md-transparent" md-elevation="0">
Navigation
</md-toolbar>
<md-list>
<md-list-item>
<md-icon>move_to_inbox</md-icon>
<span class="md-list-item-text">Inbox</span>
</md-list-item>
<md-list-item>
<md-icon>send</md-icon>
<span class="md-list-item-text">Sent Mail</span>
</md-list-item>
<md-list-item>
<md-icon>delete</md-icon>
<span class="md-list-item-text">Trash</span>
</md-list-item>
<md-list-item>
<md-icon>error</md-icon>
<span class="md-list-item-text">Spam</span>
</md-list-item>
</md-list>
</md-app-drawer>
</template>
<script>
export default {
name: 'PagePanel'
}
</script>
我也没有处于生产模式,并且在控制台中没有收到任何错误。
不容易发现,但在 this page of the VueMaterial docs 的末尾,它说:
In these examples we have 3 distinct areas: Toolbar
, Drawer
and Content
. You should create them using the following tags:
md-app-toolbar
: ...
md-app-drawer
: ...
md-app-content
: ...
Any other tag passed as a direct child of the md-app tag will be ignored. The component will only look for these three tags and choose the right placement for them.
幸运的是,它们 added the ability to use slots(但没有记录它们,您必须查看合并请求才能看到)。您可以像这样使用它们:
<template>
<div class="page-container md-layout-row">
<md-app>
<md-app-toolbar> ... </md-app-toolbar>
<page-panel slot="md-app-drawer"></page-panel>
<md-app-content> ... </md-app-content>
</md-app>
</div>
</template>
但是,请注意 slot
值只能是上面定义的 3 个值之一。
我试图在 Vue 路由器仪表板页面上使用 Vue Material,但我试图将面板存储在一个单独的文件中。我完全不知道为什么这不起作用,我花了最后 2 个小时在谷歌上搜索这个问题,但我什么也没有。即使使用 Vue chrome 扩展也不会显示它,这排除了样式。在组件上放置红色背景颜色确实有效,但仍然无效。另外,请原谅我的错误代码——我已经使用 Vue 大约 3 天了。
<template>
<div class="page-container md-layout-row">
<md-app>
<md-app-toolbar class="md-primary">
<span class="md-title">{{ usernameTitleCase }}</span>
</md-app-toolbar>
<PagePanel></PagePanel>
<md-app-content>
<div class="user">
<h1>{{ user.username }}</h1>
<h2>{{ user.customThing }}</h2>
<h3>{{ user.id }}</h3>
</div>
</md-app-content>
</md-app>
</div>
</template>
<script>
import PagePanel from '@/components/panel.vue';
export default {
name: 'Dashboard',
components: {
PagePanel
},
data() {
return {}
},
computed: {
usernameTitleCase() {
const letters = this.user.username.split('');
letters[0] = letters[0].toUpperCase();
return letters.join('')
}
},
created() {
this.user = JSON.parse(localStorage.getItem('user'));
}
}
</script>
<style>
.md-app {
min-height: 350px;
}
.md-drawer {
width: 230px;
max-width: calc(100vw - 125px);
}
</style>
此处的组件文件:
<template>
<md-app-drawer md-permanent="full">
<md-toolbar class="md-transparent" md-elevation="0">
Navigation
</md-toolbar>
<md-list>
<md-list-item>
<md-icon>move_to_inbox</md-icon>
<span class="md-list-item-text">Inbox</span>
</md-list-item>
<md-list-item>
<md-icon>send</md-icon>
<span class="md-list-item-text">Sent Mail</span>
</md-list-item>
<md-list-item>
<md-icon>delete</md-icon>
<span class="md-list-item-text">Trash</span>
</md-list-item>
<md-list-item>
<md-icon>error</md-icon>
<span class="md-list-item-text">Spam</span>
</md-list-item>
</md-list>
</md-app-drawer>
</template>
<script>
export default {
name: 'PagePanel'
}
</script>
我也没有处于生产模式,并且在控制台中没有收到任何错误。
不容易发现,但在 this page of the VueMaterial docs 的末尾,它说:
In these examples we have 3 distinct areas:
Toolbar
,Drawer
andContent
. You should create them using the following tags:
md-app-toolbar
: ...md-app-drawer
: ...md-app-content
: ...Any other tag passed as a direct child of the md-app tag will be ignored. The component will only look for these three tags and choose the right placement for them.
幸运的是,它们 added the ability to use slots(但没有记录它们,您必须查看合并请求才能看到)。您可以像这样使用它们:
<template>
<div class="page-container md-layout-row">
<md-app>
<md-app-toolbar> ... </md-app-toolbar>
<page-panel slot="md-app-drawer"></page-panel>
<md-app-content> ... </md-app-content>
</md-app>
</div>
</template>
但是,请注意 slot
值只能是上面定义的 3 个值之一。