【问题标题】:How can I use bottom navigation and navigation drawers together? v-app doesn't work如何同时使用底部导航和导航抽屉? v-app 不工作
【发布时间】:2019-08-15 09:29:22
【问题描述】:

我是 vuetify 和 vue 的新手,我想创建一个布局,其中具有 sm 或更小的屏幕的用户将使用底部导航组件,而具有 md 的用户将使用strong> 或更高版本将使用抽屉式导航。

我正在使用 v-app 组件,根据文档“帮助引导您的应用程序使用适当的组件大小”和“这些(组件)可以混合和匹配,并且每个特定组件中只有一个应该存在于随时。”

<template>
  <v-app>
    <v-navigation-drawer app>
      <v-list rounded>
        <v-subheader>REPORTS</v-subheader>
        <v-list-item-group v-model="item" color="primary">
          <v-list-item v-for="(item, i) in items" :key="i">
            <v-list-item-icon>
              <v-icon v-text="item.icon"></v-icon>
            </v-list-item-icon>
            <v-list-item-content>
              <v-list-item-title v-text="item.text"></v-list-item-title>
            </v-list-item-content>
          </v-list-item>
        </v-list-item-group>
      </v-list>
    </v-navigation-drawer>

    <v-app-bar app>
      <v-toolbar-title class="headline text-uppercase">
        <span>Vuetify</span>
        <span class="font-weight-light">MATERIAL DESIGN</span>
      </v-toolbar-title>
      <v-spacer></v-spacer>
      <v-btn text href="https://github.com/vuetifyjs/vuetify/releases/latest" target="_blank">
        <span class="mr-2">Latest Release</span>
      </v-btn>
    </v-app-bar>

    <v-content fluid>
      <HelloWorld />
    </v-content>

    <v-bottom-navigation app>
      <v-btn value="recent">
        <span>Recent</span>
        <v-icon>history</v-icon>
      </v-btn>

      <v-btn value="favorites">
        <span>Favorites</span>
        <v-icon>favorite</v-icon>
      </v-btn>

      <v-btn value="nearby">
        <span>Nearby</span>
        <v-icon>place</v-icon>
      </v-btn>
    </v-bottom-navigation>

  </v-app>
</template>

<script lang="ts">
import Vue from "vue";
import HelloWorld from "./components/HelloWorld.vue";

export default Vue.extend({
  name: "App",
  components: {
    HelloWorld
  },
  data: () => ({
    item: 1,
    items: [
      { text: "Real-Time", icon: "mdi-clock" },
      { text: "Audience", icon: "mdi-account" },
      { text: "Conversions", icon: "mdi-flag" }
    ]
  })
});
</script>

【问题讨论】:

    标签: vue.js vuetify.js


    【解决方案1】:

    所以文档中的文本可能有点不清楚。

    您可以根据需要显示它们。但是,例如,您不应该同时看到两个 v-app-bars。

    所以这里是解决方案:

    <template>
      <v-app>
        <v-navigation-drawer app v-model="$vuetify.breakpoint.mdAndUp" stateless class="hidden-sm-and-down">
          <v-list rounded>
            <v-subheader>REPORTS</v-subheader>
            <v-list-item-group v-model="item" color="primary">
              <v-list-item v-for="(item, i) in items" :key="i">
                <v-list-item-icon>
                  <v-icon v-text="item.icon"></v-icon>
                </v-list-item-icon>
                <v-list-item-content>
                  <v-list-item-title v-text="item.text"></v-list-item-title>
                </v-list-item-content>
              </v-list-item>
            </v-list-item-group>
          </v-list>
        </v-navigation-drawer>
    
        <v-app-bar app class="hidden-sm-and-down">
          <v-toolbar-title class="headline text-uppercase">
            <span>Vuetify</span>
            <span class="font-weight-light">MATERIAL DESIGN</span>
          </v-toolbar-title>
          <v-spacer></v-spacer>
          <v-btn text href="https://github.com/vuetifyjs/vuetify/releases/latest" target="_blank">
            <span class="mr-2">Latest Release</span>
          </v-btn>
        </v-app-bar>
    
        <v-content fluid>
          <HelloWorld />
        </v-content>
    
        <v-bottom-navigation app class="d-flex d-md-none">
          <v-btn value="recent">
            <span>Recent</span>
            <v-icon>history</v-icon>
          </v-btn>
    
          <v-btn value="favorites">
            <span>Favorites</span>
            <v-icon>favorite</v-icon>
          </v-btn>
    
          <v-btn value="nearby">
            <span>Nearby</span>
            <v-icon>place</v-icon>
          </v-btn>
        </v-bottom-navigation>
    
      </v-app>
    </template>
    
    <script lang="ts">
    import Vue from "vue";
    import HelloWorld from "./components/HelloWorld.vue";
    
    export default Vue.extend({
      name: "App",
      components: {
        HelloWorld
      },
      data: () => ({
        item: 1,
        items: [
          { text: "Real-Time", icon: "mdi-clock" },
          { text: "Audience", icon: "mdi-account" },
          { text: "Conversions", icon: "mdi-flag" }
        ]
      })
    });
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多