访问插槽中的道具

时间:2019-10-08 16:27:49

标签: vue.js vuetify.js

让您知道如何访问道具以检查状况。

例如

<template>
    <v-data-table
            :headers="headers"
            :items="fixtures"
            :items-per-page="5"
            class="elevation-10"
    >
        <template v-slot:item.on="{ item }">
            <td>{{item.on}}</td>
        </template>

        <template v-slot:item.action="{ item }">
            <v-icon left >mdi-lightbulb-on</v-icon>
            <v-icon left >mdi-play-circle</v-icon>
            <v-icon left >mdi-pause-circle</v-icon>
        </template>

    </v-data-table>
</template>

如果我的fixture.on为true,我想显示为'on',否则为'Off'。

同样,我要在Fixture.on为false且显示为false时显示图标播放 图标为true时暂停。

最后一个问题,如何在其上建立方法?

1 个答案:

答案 0 :(得分:1)

这里有几种不同的方法。这显示了使用过滤器,方法,内联表达式和v-if / v-else

new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  
  data () {
    return {
      fixtures: [ { on: true }, { on: false } ],
      headers: [
        { text: 'On', value: 'on' },
        { text: 'Action', value: 'action' }
      ]
    }
  },
  
  filters: {
    onOffFilter (value) {
      return value ? 'On' : 'Off'
    }
  },
  
  methods: {
    onOffMethod (value) {
      return value ? 'On' : 'Off'
    }
  }
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://unpkg.com/@mdi/font@3.9.97/css/materialdesignicons.css" rel="stylesheet">
<link href="https://unpkg.com/vuetify@2.1.1/dist/vuetify.css" rel="stylesheet">
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.1.1/dist/vuetify.js"></script>

<div id="app">
  <v-app>
    <v-data-table
      :headers="headers"
      :items="fixtures"
      :items-per-page="5"
      class="elevation-10"
    >
      <template v-slot:item.on="{ item }">
        <div>{{ item.on | onOffFilter }}</div>
        <div>{{ onOffMethod(item.on) }}</div>
        <div>{{ item.on ? 'On' : 'Off' }}</div>
        <div>
          <template v-if="item.on">On</template>
          <template v-else>Off</template>
        </div>
      </template>

      <template v-slot:item.action="{ item }">
        <v-icon left>mdi-lightbulb-on</v-icon>
        <v-icon left v-if="item.on">mdi-pause-circle</v-icon>
        <v-icon left v-else>mdi-play-circle</v-icon>
      </template>
    </v-data-table>
</v-app>
</div>

对于图标,我刚刚使用了v-if / v-else

相关问题