如何合并Vuetify数据表和Vuetify列表?

时间:2018-06-27 19:06:27

标签: javascript vue.js vuetify.js

我需要使用此Vuetify data table,但要使用此Vuetify list的布局。该列表应该是可搜索的,每个条目都应有一个按钮。

该怎么做?

到目前为止,这是我的结果:https://codepen.io/anon/pen/ZRqwYG

HTML:

<div id="app">
  <v-app id="inspire">
    <v-card>

      <v-card-title>
        Vuetify Data-Table + Vuetify List
        <v-spacer></v-spacer>
        <v-text-field
          v-model="search"
          append-icon="search"
          label="Search"
          single-line
          hide-details
        ></v-text-field>
      </v-card-title>

      <v-data-table
        :headers="headers"
        :items="desserts"
        :search="search"
      >

        <template slot="items" slot-scope="props">
              <v-list-tile-content>
                <v-list-tile-title>{{ props.item.name }}</v-list-tile-title>
                <v-list-tile-sub-title class="text--primary">{{ props.item.iron }}</v-list-tile-sub-title>
                <v-list-tile-sub-title>{{ props.item.calories }}</v-list-tile-sub-title>
              </v-list-tile-content>

              <v-list-tile-action>
                <v-list-tile-action-text>{{ props.item.fat }}</v-list-tile-action-text>
                <v-icon color="grey lighten-1">star_border</v-icon>
              </v-list-tile-action>

         </>    
        </template>

        <v-alert slot="no-results" :value="true" color="error" icon="warning">
          Your search for "{{ search }}" found no results.
        </v-alert>

      </v-data-table>

    </v-card>
  </v-app>
</div>

1 个答案:

答案 0 :(得分:2)

演示:https://codepen.io/anon/pen/ZRwLgX?editors=0010

您无需使用Vuetify List即可实现。您可以根据需要使用Typography类对Vuetify数据表行中的内容进行样式设置。我在 tr 标记上添加了onclick侦听器,该标记可切换绑定到星形图标的特定行项目的值键。

因此,在JS方法中,我添加了切换功能:

toggle(name) {
  let index = this.desserts.findIndex(e => e.name == name);
  if (index > -1) {
    this.desserts[index].value = !this.desserts[index].value;
  }
}

在数据表模板中,每个行项目如下:

<tr style="cursor: pointer" @click="toggle(props.item.name)">
  <td>
    <div class="body-2">
      {{props.item.name}}
    </div>
    <div class="">
      {{props.item.iron}}
    </div>
    <div class="">
      {{props.item.calories}}
    </div>
  </td>
  <td>
    <div class="body-2" style="textAlign: center">
      {{props.item.fat}}<br/>
      <v-icon v-if="props.item.value" color="yellow darken-2">star</v-icon>
      <v-icon v-else color="grey lighten-1">star_border</v-icon>
    </div>
  </td>
</tr>

我仅使用了2个标题项,并已注释了其余项。您甚至可以选择通过使用数据表中的 hide-headers 道具来完全隐藏标题