我将 vue 与vue-material一起使用。
我目前正在布局我的 web 应用程序的主要结构,使用作为md-app
rootmd-[app-]drawer
和.md-[app-]toolbar
md-[app-]content
如果我将这些组件直接放在md-app
标签中,它们就可以工作。这看起来像这样:
<template>
<div class="md-layout-row">
<md-app>
<md-drawer>
<md-list>
<md-list-item>
<md-icon>people</md-icon>
<span class="md-list-item-text">Foo</span>
</md-list-item>
<md-list-item>
<md-icon>view_list</md-icon>
<span class="md-list-item-text">Bar</span>
</md-list-item>
</md-list>
</md-drawer>
</md-app>
</div>
</template>
但出于设计目的,我尝试将每个内部部分(在本例中为md-drawer
标签)提取到自己的 vue 组件中。
问题
我Drawer
现在有我的组件,它看起来像这样:
<template>
<md-drawer>
<md-list>
<md-list-item>
<md-icon>people</md-icon>
<span class="md-list-item-text">Foo</span>
</md-list-item>
<md-list-item>
<md-icon>view_list</md-icon>
<span class="md-list-item-text">Bar</span>
</md-list-item>
</md-list>
</md-drawer>
</template>
.. 我的md-app
(在导入组件 ofc 之后)现在看起来像这样:
<template>
<div class="md-layout-row">
<md-app>
<MyDrawer />
</md-app>
</div>
</template>
但这根本不会渲染抽屉。为什么是这样?Vue 是否额外包装了可能与 vue-material 的 css 混淆的组件?有没有办法绕过/解决这个问题?..还是我只是用错了方法?
加法(编辑 1)
经过一些实验后,我发现如果使用标签环绕MyDrawer
标签,它可以工作md-[app-]content
,但这不会导致我正在寻找的布局。
我想md-app
是专门寻找这些组件,因为它不知道如何处理MyDrawer
标签,所以它只是忽略它?虽然MyDrawer
本质上是一个md-drawer
标签/组件?
加法(编辑 2)
我一直在阅读DOM Template Parsing Caveats,我认为这应该可以工作,但我还没有成功。我刚刚声明了一个标签并从组件<md-drawer is="MyDrawer" />
中删除了主包装标签md-drawer
MyDrawer