【问题标题】:How to create a veutify superset to extend basic functionality如何创建验证超集以扩展基本功能
【发布时间】:2019-10-23 23:52:51
【问题描述】:

我正在尝试创建一个基于插件的组件库,以使用 veutify 跨多个产品线提供一致性。但是,安装库并添加组件我得到了几个关于深色主题的错误。

组件库和目标产品线都通过 vue cli 安装了 veutfy。

<template>
     <div class="module-wrap">
        <v-card v-bind="$attrs" v-on="$listeners" :class="`dashboard-module units`">
            <v-toolbar flat dense :color="color">
                <v-toolbar-title>{{title}}</v-toolbar-title>
                <v-spacer></v-spacer>
                <v-menu v-bind="$attrs" v-on="$listeners"  class="menu" offset-y>
                    <template v-slot:activator="{ on }">
                        <v-btn class="menu-opener" icon v-on="on">
                            <font-awesome-icon icon="ellipsis-h"></font-awesome-icon>
                        </v-btn>
                    </template>
                    <v-list>
                        <v-list-tile class="tooltip" @click="dialog = true">
                            <v-list-tile-avatar>
                                <font-awesome-icon icon="info"/>
                            </v-list-tile-avatar>
                            <v-list-tile-content>
                                <v-list-tile-title>Information</v-list-tile-title>
                            </v-list-tile-content>
                        </v-list-tile>
                        <v-list-tile class="favorite" @click="$emit('favorite')">
                            <v-list-tile-avatar>
                                <font-awesome-icon icon="star"/>
                            </v-list-tile-avatar>
                            <v-list-tile-content>
                                <v-list-tile-title>Save To Favorites</v-list-tile-title>
                            </v-list-tile-content>
                        </v-list-tile>
                        <v-list-tile class="export" v-if="!disableExport" @click="$emit('export')">
                            <v-list-tile-avatar>
                                <font-awesome-icon icon="file-export"/> 
                            </v-list-tile-avatar>
                            <v-list-tile-content>
                                <v-list-tile-title>Export</v-list-tile-title>
                            </v-list-tile-content>
                        </v-list-tile>
                    </v-list>
                </v-menu>
            </v-toolbar>
            <div :class="`content`">
                <slot></slot>
            </div>
            <v-card-text>
                <slot name="card-text"></slot>
            </v-card-text>
            <v-dialog v-model="dialog" width="500">
                <v-card>
                    <v-card-title>
                        <div class="headline">{{title}}</div>
                    </v-card-title>
                    <v-card-text>
                        <slot name="tooltip"></slot>
                    </v-card-text>

                    <v-card-actions>
                        <v-spacer></v-spacer>
                        <v-btn @click="dialog = false" flat color="primary">Ok</v-btn>
                    </v-card-actions>
                </v-card>
            </v-dialog>
        </v-card>
    </div>
</template>

<script lang="ts">

export default {
    // props:['color', 'module', 'title'],
    props: {
        color:String,
        title:String,
        disableExport:Boolean
    },

    data() {
        return {
            dialog:false
        }
    }
}
</script>

<style scoped>

.dashboard-module {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: 100%;
}
.content {
    overflow-y: auto;
    overflow-x: hidden;
    max-height: 100%;
}

</style>

^ 库中的组件

webpack-internal:///./node_modules/dashboard-components/node_modules/vue/dist/vue.runtime.esm.js:620 [Vue warn]: Error in render: "TypeError: Cannot read property 'dark' of undefined"

found in

---> <VMenu>
       <TDashboardModule>
         <App> at src/App.vue
           <Root>

TypeError: Cannot read property 'dark' of undefined

[Vue warn]: Error in getter for watcher "isDark": "TypeError: Cannot read property 'dark' of undefined"

found in

---> <ThemeProvider>
       <VDialog>
         <TDashboardModule>
           <App> at src/App.vue
             <Root>

^ 抛出的错误

vuetify 版本 1.5.14

【问题讨论】:

  • 好像是vuetify v2错误?请指定您的 vuetify 版本。请参阅stackoverflow.com/a/56367842/1981247,了解如何从 vue-cli install 正确迁移,因为它当前安装 v1,然后您手动添加 v2。
  • 我在两个项目中都使用 1.5.14 版本,很抱歉造成混淆。

标签: javascript vue.js frameworks vuetify.js


【解决方案1】:

您是否设置了主题颜色?在哪里?万一否定,按照documentation

Vuetify 支持 Material Design 的明暗变体 规格。此名称从根应用程序组件 v-app 开始 并且得到大多数组件的支持。默认情况下,您的 应用程序将使用浅色主题,但这很容易 通过添加 dark 属性覆盖。

<v-app dark>

如果您不想将所有内容都设置为一种颜色,则可以将名为 dark 的道具传递给组件,以使它们使用深色主题:

<v-menu dark>

Documentation about menu component

【讨论】:

  • 是的,组件被包装在&lt;v-app&gt; 标签中,主题本身没有任何变化。
  • 抱歉,我无法理解,您是否如我所述将“黑暗”道具应用于 v-app?还是组件?
  • v-app 本身
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多