【问题标题】:List groupe inside dialog renders title out of correct position对话框内的列表组使标题不在正确的位置
【发布时间】:2019-04-10 08:14:20
【问题描述】:

列表组组件不正确地呈现数据- 应该在插槽激活器磁贴上的标题与下拉元素一起呈现。

我在这里使用了一个 vuetify.js API 的例子: https://vuetifyjs.com/en/components/lists。 即使使用原始示例,我也得到相同的结果。

外部组件:

<template>
  <v-container>
      <v-dialog :v-model="dialog" persistent width="800">
            <v-card>
              <v-card-title class="headline grey lighten-4" primary-title>File Results
                <v-spacer/>
                <v-btn flat icon @click="close">
                  <v-icon color="black" medium>cancel</v-icon>
                </v-btn>
              </v-card-title>     
                <ResultListView/>
              <v-card-actions>
                <v-spacer></v-spacer>
                <v-btn color="primary" flat @click="openFileDialog">results</v-btn>
              </v-card-actions>
              </v-card>
      </v-dialog>
  </v-container>
</template>

从 vuetify 示例中列出组件:

<template>
  <v-layout row>
    <v-flex xs12 sm6 offset-sm3>
      <v-card>
        <v-toolbar color="teal" dark>
          <v-toolbar-side-icon></v-toolbar-side-icon>

          <v-toolbar-title>Topics</v-toolbar-title>

          <v-spacer></v-spacer>

          <v-btn icon>
            <v-icon>more_vert</v-icon>
          </v-btn>
        </v-toolbar>

        <v-list>
          <v-list-group
            v-for="item in items"
            :key="item.title"
            v-model="item.active"
            :prepend-icon="item.action"
            aria-expanded="true"
            no-action
          >
            <template v-slot:activator>
              <v-list-tile>
                <v-list-tile-content>
                  <v-list-tile-title>{{ item.title }}</v-list-tile-title>
                </v-list-tile-content>
              </v-list-tile>
            </template>

            <v-list-tile
              v-for="subItem in item.items"
              :key="subItem.title"
            >
              <v-list-tile-content>
                <v-list-tile-title>{{ subItem.title }}</v-list-tile-title>
              </v-list-tile-content>

              <v-list-tile-action>
                <v-icon>{{ subItem.action }}</v-icon>
              </v-list-tile-action>
            </v-list-tile>
          </v-list-group>
        </v-list>
      </v-card>
    </v-flex>
  </v-layout>
</template>

<script>

  export default {
    data () {
      return {
        items: [
          {
            action: 'local_activity',
            title: 'Attractions',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'restaurant',
            title: 'Dining',
            active: true,
            items: [
              { title: 'Breakfast & brunch' },
              { title: 'New American' },
              { title: 'Sushi' }
            ]
          },
          {
            action: 'school',
            title: 'Education',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'directions_run',
            title: 'Family',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'healing',
            title: 'Health',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'content_cut',
            title: 'Office',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'local_offer',
            title: 'Promotions',
            items: [
              { title: 'List Item' }
            ]
          }
        ]
      }
    }
  }
</script>

我希望结果类似于提供的 API 示例 但我得到以下结果:

【问题讨论】:

  • 您在应用中使用的是什么版本的 vuetify?
  • 版本为:1.4.1
  • 好吧,我想如果它是旧版本可能是原因,但我不这么认为。我无法复制您遇到的问题,因此只能认为您还有其他原因导致冲突,但不知道。尝试自己测试列表组件,而不是在对话框中添加内容,直到它中断。

标签: vue.js vue-component vuetify.js


【解决方案1】:

由于你使用的是 1.4.1 版本,所以还应该查看正确版本的 vuetify 文档, 如果您想做任何更改,只需查看v1https://v1.vuetifyjs.com/en/components/lists#list 的此文档,否则只需更新 vuetify 版本。 以下是您的解决方案的代码,

<template>
  <v-layout row>
    <v-flex xs12 sm6 offset-sm3>
      <v-card>
        <v-toolbar color="teal" dark>
          <v-toolbar-side-icon></v-toolbar-side-icon>
          <v-toolbar-title>Topics</v-toolbar-title>
          <v-spacer></v-spacer>
          <v-btn icon>
            <v-icon>more_vert</v-icon>
          </v-btn>
        </v-toolbar>
        <v-list>
          <v-list-group
            v-for="item in items"
            v-model="item.active"
            :key="item.title"
            :prepend-icon="item.action"
            no-action
          >
            <v-list-tile slot="activator">
              <v-list-tile-content>
                <v-list-tile-title>{{ item.title }}</v-list-tile-title>
              </v-list-tile-content>
            </v-list-tile>
            <v-list-tile v-for="subItem in item.items" :key="subItem.title">
              <v-list-tile-content>
                <v-list-tile-title>{{ subItem.title }}</v-list-tile-title>
              </v-list-tile-content>
              <v-list-tile-action>
                <v-icon>{{ subItem.action }}</v-icon>
              </v-list-tile-action>
            </v-list-tile>
          </v-list-group>
        </v-list>
      </v-card>
    </v-flex>
  </v-layout>
</template>

<script>

  export default {
    data () {
      return {
        items: [
          {
            action: 'local_activity',
            title: 'Attractions',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'restaurant',
            title: 'Dining',
            active: true,
            items: [
              { title: 'Breakfast & brunch' },
              { title: 'New American' },
              { title: 'Sushi' }
            ]
          },
          {
            action: 'school',
            title: 'Education',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'directions_run',
            title: 'Family',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'healing',
            title: 'Health',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'content_cut',
            title: 'Office',
            items: [
              { title: 'List Item' }
            ]
          },
          {
            action: 'local_offer',
            title: 'Promotions',
            items: [
              { title: 'List Item' }
            ]
          }
        ]
      }
    }
  }
</script>

希望对你有帮助!

【讨论】:

  • @MichaelGabbay 酷,
猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 2013-12-25
  • 2021-01-15
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2020-02-03
  • 2021-06-15
相关资源
最近更新 更多