Vuetify 数据表 select 全部禁用复选框

Vuetify datatable select all with disabled checkboxes

我在处理包含 select 行的数据表时遇到问题。我有禁用复选框的行,但 select 无论如何都会检查它们...... 这是一个错误吗?

我做了一个代码笔:https://codepen.io/slayerbleast/pen/jOWjzWJ

如何修复select所有复选框只选中可用的复选框?

模板:

<v-content>
    <v-data-table
        v-model="selected"
        :headers="headers"
        :items="desserts"
        item-key="name"
        show-select
    >
    <template #item="{ item }">
        <tr>
            <td>
                <v-checkbox
                    :disabled="item.calories > 250"
                    class="pa-0 ma-0"
                    :ripple="false"
                    v-model="selected"
                    :value="item"
                    hide-details
                >
                </v-checkbox>
            </td>
            <td>{{item.name}}</td>
            <td>{{item.calories}}</td>
            <td>{{item.fat}}</td>
            <td>{{item.carbs}}</td>
            <td>{{item.protein}}</td>
            <td>{{item.iron}}</td>
        </tr>
    </template>
    </v-data-table>
</v-content>

数据:

data: () => ({
        selected: [],
            headers: [
          {
            text: 'Dessert (100g serving)',
            align: 'start',
            sortable: false,
            value: 'name',
          },
          { text: 'Calories', value: 'calories' },
          { text: 'Fat (g)', value: 'fat' },
          { text: 'Carbs (g)', value: 'carbs' },
          { text: 'Protein (g)', value: 'protein' },
          { text: 'Iron (%)', value: 'iron' },
        ],
        desserts: [...]
})

v-data-table 组件上,您可以设置 selectable-key 属性:

The property on each item that is used to determine if it is selectable or not

如果不指定,默认使用isSelectable。您可以做的是创建一个计算 属性 以将此信息添加到您的 desserts 属性,如下所示:

computed: {
  enrichedDesserts() {
    return this.desserts.map(x => ({ ...x, isSelectable: x.calories <= 250 }));
  }
}

然后把你的v-data-tableitems属性改成:

<v-data-table :items="enrichedDesserts">

请参阅此 Codepen 以获取工作示例。