使用 v-for 在 v-select 中循环选项值,是否可行?
Loop options values in v-select using v-for, is it doable?
我是 VueJS 的新手,正在使用 vuetify 做一个 select 下拉菜单。
我正在从数据库中获取一个变量,并希望尽可能使用 v-for 生成选项。我无法让它工作,所以我使用的解决方案如下,但我认为它可以以更有效的方式完成。
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 6"
v-model="pgto.parcelas"
:items="['1','2','3','4','5','6']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 5"
v-model="pgto.parcelas"
:items="['1', '2', '3', '4', '5']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 4"
v-model="pgto.parcelas"
:items="['1', '2', '3', '4']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 3"
v-model="pgto.parcelas"
:items="['1', '2', '3']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 2"
v-model="pgto.parcelas"
:items="['1', '2']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 1"
v-model="pgto.parcelas"
:items="['1']"
label="Parcelas"
required
/>
我正在从数据库中获取 input.jornada.parcelas。我最初的想法是做这样的 JS,但是使用 v-select:
for(var i = 1; i <= input.jornada.parcelas; i++){
"<option value='" + i + "'>" + i + "</option>";
}
我的尝试:
<v-select
v-show="pgto.tipo === 'credito'"
v-model="pgto.parcelas"
:options v-for="n in input.jornada.parcelas" {{ n }}>
如您所见,我的发展并不顺利...有什么建议、参考或想法吗?
你想做的不是 Vue 的工作方式,因此它不会工作。
您应该修改数据并将其绑定到 v-select.
,而不是生成选项标签
我会通过 computed property 生成列表值或加载数据,并将其作为数据中的变量保存(如果只使用一次的话)。
假设数据是动态的,并且会发生变化,您将使用计算的 属性。
computed:{
options(){
let opts = [];
for(let i = 1; i <= input.jornada.parcelas; i++){
opts.push({text:i, value:i});
}
return opts
}
}
然后你将计算值绑定到 items
,vuetify 将处理其余的。
<v-select
v-show="pgto.tipo === 'credito'"
v-model="pgto.parcelas"
:items="options"
>
我是 VueJS 的新手,正在使用 vuetify 做一个 select 下拉菜单。 我正在从数据库中获取一个变量,并希望尽可能使用 v-for 生成选项。我无法让它工作,所以我使用的解决方案如下,但我认为它可以以更有效的方式完成。
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 6"
v-model="pgto.parcelas"
:items="['1','2','3','4','5','6']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 5"
v-model="pgto.parcelas"
:items="['1', '2', '3', '4', '5']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 4"
v-model="pgto.parcelas"
:items="['1', '2', '3', '4']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 3"
v-model="pgto.parcelas"
:items="['1', '2', '3']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 2"
v-model="pgto.parcelas"
:items="['1', '2']"
label="Parcelas"
required
/>
<v-select
v-show="pgto.tipo === 'credito'"
v-if="input.jornada.parcelas === 1"
v-model="pgto.parcelas"
:items="['1']"
label="Parcelas"
required
/>
我正在从数据库中获取 input.jornada.parcelas。我最初的想法是做这样的 JS,但是使用 v-select:
for(var i = 1; i <= input.jornada.parcelas; i++){
"<option value='" + i + "'>" + i + "</option>";
}
我的尝试:
<v-select
v-show="pgto.tipo === 'credito'"
v-model="pgto.parcelas"
:options v-for="n in input.jornada.parcelas" {{ n }}>
如您所见,我的发展并不顺利...有什么建议、参考或想法吗?
你想做的不是 Vue 的工作方式,因此它不会工作。
您应该修改数据并将其绑定到 v-select.
,而不是生成选项标签我会通过 computed property 生成列表值或加载数据,并将其作为数据中的变量保存(如果只使用一次的话)。
假设数据是动态的,并且会发生变化,您将使用计算的 属性。
computed:{
options(){
let opts = [];
for(let i = 1; i <= input.jornada.parcelas; i++){
opts.push({text:i, value:i});
}
return opts
}
}
然后你将计算值绑定到 items
,vuetify 将处理其余的。
<v-select
v-show="pgto.tipo === 'credito'"
v-model="pgto.parcelas"
:items="options"
>