根据值限制 v-select 条目

Limiting v-select entries based on value

我有一个 v 表单,当单击数据 table 中的记录时,它会打开。表单显示记录的信息,我有一个 v-select 显示预订状态选项,当前状态为 selected.

<v-form ref="BookingForm" lazy-validation>
    <v-container>
    <v-row>
        <v-col>
        <v-select
            v-model="editedItem.bookingStatus"
            :items="BookingStatus"
            item-text="text"
            item-value="id"
            label="Status"
            :rules="selectRule"
        />
        </v-col>
    </v-row>
    <v-divider />
    <v-row>
        
        ... other information

    </v-row>
    </v-container>
</v-form>

在我的数据中,我有描述的选项。

BookingStatus: [
    { id: 1, text: 'Pending' },
    {
        id: 2,
        text: 'Confirmed - unpaid',
    },               {
        id: 3,
        text: 'Confirmed - paid',
    },
],

我希望只显示等于或高于当前 bookingStatus 值的选项。例如:

如果记录的预订状态为 1,我希望 v-select 下拉列表中显示“待处理”、“已确认 - 未付款”、“已确认 - 已付款”

如果记录的 bookingStatus 为 2,我只想在下拉列表中显示“已确认 - 未付款”、“已确认 - 已付款”。

如果记录的预订状态为 3,我只想在下拉列表中显示“已确认 - 已付款”。

这可能吗?

您可以像这样在 :items 上应用 filter

<v-select v-model="editedItem.bookingStatus"
    :items="BookingStatus.filter(status => status.id >= editedItem.bookingStatus)"
    item-text="text"
    item-value="id"
    label="Status"
    :rules="selectRule"
    />