vuetify v-select in v-for 循环:selected 选项出现在 v-select 的所有迭代中
vuetify v-select in v-for loop: selected option appears in all iterations of the v-select
我有一个 v-select 嵌套在 v-for 中用于项目..
所以,基本上,v-for item in items 给我一个包含所有项目的 table。
在这个 table 中,我有一个 v-select 包含它自己的从计算的 属性 (getter) 中提取的项目数组。
因此,如果我有 3 个项目,那么我将有一个 3 个项目 table 和 3 个 v-select,它们都包含从计算结果中填充的相同下拉选项。
我的问题是,当我 select 一个 v-select 中的一个选项时,它会填充所有选项。
如何将其配置为仅填充一个特定的 v-select,而不是全部?
令人惊讶的是,我研究过的每个示例要么处理嵌套数据,要么处理与此处无关的其他内容。但如果这确实是重复的,我会很高兴被指出正确的方向。
一些 shorthand 上下文代码:
<v-data-table :items="getItems">
<tr>
<td>{{ item.name }}</td>
<td> <v-select :items="availableSelections"/>
</tr>
</v-data-table>
get getItems() {
// returns iterated items
}
get availableSelections() {
// returns selection choices in an array
所以,我在这里的预期行为是, 如果我从 getItems() 返回 3 个项目,我将有 3 行填充 3 个名称和 3 个 v-selects,都具有来自 availableSelections() 的相同下拉选项。但是当我 select 来自一行中 v-select 的选项时,它不会填充其他行中的其他 v-selects。
你想要这样的东西吗:
<template>
<v-app>
<v-content>
<v-data-table :items="items">
<template v-slot:items="{ item }">
<td>{{ item.name }}</td>
<td>
<v-select :items="options" v-model="item.optionSelected" />
</td>
<td>{{ item.optionSelected }}</td>
</template>
</v-data-table>
</v-content>
</v-app>
</template>
<script>
export default {
name: 'app',
data: () => ({
items: [
{ name: 'Name 1', optionSelected: null },
{ name: 'Name 2', optionSelected: null },
{ name: 'Name 3', optionSelected: null },
],
options: ['Option 1', 'Option 2', 'Option 3'],
}),
};
</script>
在这个例子中,每个v-select
不改变其他组件。
我有一个 v-select 嵌套在 v-for 中用于项目..
所以,基本上,v-for item in items 给我一个包含所有项目的 table。 在这个 table 中,我有一个 v-select 包含它自己的从计算的 属性 (getter) 中提取的项目数组。
因此,如果我有 3 个项目,那么我将有一个 3 个项目 table 和 3 个 v-select,它们都包含从计算结果中填充的相同下拉选项。
我的问题是,当我 select 一个 v-select 中的一个选项时,它会填充所有选项。
如何将其配置为仅填充一个特定的 v-select,而不是全部?
令人惊讶的是,我研究过的每个示例要么处理嵌套数据,要么处理与此处无关的其他内容。但如果这确实是重复的,我会很高兴被指出正确的方向。
一些 shorthand 上下文代码:
<v-data-table :items="getItems">
<tr>
<td>{{ item.name }}</td>
<td> <v-select :items="availableSelections"/>
</tr>
</v-data-table>
get getItems() {
// returns iterated items
}
get availableSelections() {
// returns selection choices in an array
所以,我在这里的预期行为是, 如果我从 getItems() 返回 3 个项目,我将有 3 行填充 3 个名称和 3 个 v-selects,都具有来自 availableSelections() 的相同下拉选项。但是当我 select 来自一行中 v-select 的选项时,它不会填充其他行中的其他 v-selects。
你想要这样的东西吗:
<template>
<v-app>
<v-content>
<v-data-table :items="items">
<template v-slot:items="{ item }">
<td>{{ item.name }}</td>
<td>
<v-select :items="options" v-model="item.optionSelected" />
</td>
<td>{{ item.optionSelected }}</td>
</template>
</v-data-table>
</v-content>
</v-app>
</template>
<script>
export default {
name: 'app',
data: () => ({
items: [
{ name: 'Name 1', optionSelected: null },
{ name: 'Name 2', optionSelected: null },
{ name: 'Name 3', optionSelected: null },
],
options: ['Option 1', 'Option 2', 'Option 3'],
}),
};
</script>
在这个例子中,每个v-select
不改变其他组件。