我正在使用vue vue-material。
我目前正在使用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
Compnonent,它看起来像这样:
<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?有没有办法绕过/解决这个问题? ..或者我只是以错误的方式使用它?
经过一些实验后,我发现如果带有MyDrawer
标记的md-[app-]content
标记带有效,但这并不会导致我正在寻找的布局。
我想md-app
正在寻找具体的这些组件,并且因为它不知道如何处理MyDrawer
标记,它只是忽略它?虽然MyDrawer
基本上是md-drawer
代码/组件?
我一直在阅读DOM Template Parsing Caveats,我认为这应该有用,但我还没有取得任何成功。我刚刚声明了<md-drawer is="MyDrawer" />
标记,并从md-drawer
组件
MyDrawer
标记
答案 0 :(得分:1)
md-active - type = Boolean。用于触发抽屉可见性的选项。应与.sync修饰符一起使用。默认= false
使用Drawer
的示例:
<md-drawer :md-active.sync="showNavigation">
...
</md-drawer>
md-app
不正确。见Component-Naming-Conventions 使用md-app
的示例:
<md-app>
<my-drawer />
</md-app>
* note 但在使用之前请查看下一个答案
作为md-app标记的直接子项传递的任何其他标记都将被忽略。该组件只会查找这三个标签,并为它们选择正确的位置。 Documentation
使用md-app
的示例:
<md-app md-waterfall md-mode="fixed-last">
<md-app-toolbar class="md-large md-dense md-primary">
<div class="md-toolbar-row">
<div class="md-toolbar-section-start">
<md-button class="md-icon-button" @click="menuVisible = !menuVisible">
<md-icon>menu</md-icon>
</md-button>
<span class="md-title">My Title</span>
</div>
<div class="md-toolbar-section-end">
<md-button class="md-icon-button">
<md-icon>more_vert</md-icon>
</md-button>
</div>
</div>
<div class="md-toolbar-row">
<md-tabs class="md-primary">
<md-tab id="tab-home" md-label="Home"></md-tab>
<md-tab id="tab-pages" md-label="Pages"></md-tab>
</md-tabs>
</div>
</md-app-toolbar>
<md-app-drawer :md-active.sync="menuVisible">
<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>
</md-app-drawer>
<md-app-content>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error quibusdam, non molestias et! Earum magnam, similique, quo recusandae placeat dicta asperiores modi sint ea repudiandae maxime? Quae non explicabo, neque.</p>
</md-app-content>
</md-app>
is
无关紧要。 see using API和Component-Naming-Conventions 只需使用代码:<md-drawer/>
<强>更新强>
如何在Drawer
中使用自定义md-app
。
drawer
必须包含在md-app-drawer
实施例
代码:
<md-app-drawer :md-active.sync="menuVisible">
<custom-drawer/>
</md-app-drawer>