在 Vuetify 数据 table、table 列中带有槽模板

In the Vuetify data table, table column with slot template

在 Vuetify 数据 table 中,对于带有插槽模板的 table 列,是否可以使用带有 Camel 大小写的列名,目前仅支持列名,例如模型中的小写字母

这不起作用:

   <template v-slot:item.firstName="{item}">
       <span>{{item.prefix}} {{item.firstName}} {{item.lastName}} </span>
   </template>

这行得通:

   <template v-slot:item.firstname="{item}">
       <span>{{item.prefix}} {{item.firstname}} {{item.lastname}} </span>
   </template>

我的数据模型具有这样的属性。

contactsList: {
  {lastName : "Ray",
  firstName : "Sam",
   prefix : "Dr."},
  {lastName : "Bank",
   firstName : "Paul",
   prefix : "Jr."}}

我玩了一下,我不知道确切的原因,但它似乎与 headers 更相关。只要您将 headers 设为小写,问题就不会出现。您甚至可以将插槽中的每个字母大写

HTML:

    <div id="app">
      <v-app id="inspire">
        <div>
          <v-data-table
            :headers="headers"
            :items="items"
          >
          
          <template v-slot:item.firstNaMe="{item}">
              <span>test1</span>
          </template>
            
          <template v-slot:item.Lastname="{item}">
              <span>test2</span>
          </template>
            
          </v-data-table>
        </div>
      </v-app>
    </div>

JS:

    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data () {
        return {
          items: [
            {firstName: 'John', Lastname: 'Doe' },
            {firstName: 'Jane', Lastname: 'Doe' }
          ],
          headers: [
            { text: 'first name', value: 'firstname' },
            { text: 'last name', value: 'lastname' }
          ],
        }
      },
    })

代码笔:https://codepen.io/reijnemans/pen/oNvQKje?editors=1010

v-slot 道具分配传递 props 而不是 { item }

这样您就不必担心header.value;按原样输入密钥名称,而不必考虑字母大小写。 注意:当你想传递一个对象时,你必须设置为小写。

之前(即 OP 问题中的示例):

<template v-slot:item.firstName="{item}">
  <span>{{item.prefix}} {{item.firstName}} {{item.lastName}} </span>
</template>

之后:

<template v-slot:item.firstName="props">
  <span>{{props.item.prefix}} {{props.item.firstName}} {{props.item.lastName}} </span>
</template>