【发布时间】:2018-07-16 02:56:02
【问题描述】:
我正在使用带有 vue-material 的 vue。
我目前正在布局我的网络应用程序的主要结构,使用md-app 作为md-[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)
经过一些实验,我发现如果用md-[app-]content 标签包围MyDrawer 标签,它可以工作,但这不会导致我正在寻找的布局。
我猜md-app 正在专门寻找这些组件,并且因为它不知道如何处理MyDrawer 标记它只是忽略它?虽然MyDrawer本质上是md-drawer标签/组件?
添加(编辑 2)
我一直在阅读有关 DOM Template Parsing Caveats 的信息,我认为这应该可行,但我还没有取得任何成功。我刚刚声明了一个<md-drawer is="MyDrawer" /> 标签并从MyDrawer 组件中删除了主要的包装md-drawer 标签
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component vue-material