Vue v-for 循环绑定属性
Vue v-for loop binding attribute
我正在尝试弄清楚如何在 vue 中执行此操作,我一直试图在选项中绑定 "selected" 的值。
在下面的简化代码中,我得到了我想要的,但仅限于第一个产品。它与第一个计算 属性:
正确绑定
<template>
<div>
<div v-for="index in 2" :key="index">
<select>
<option :selected="product1 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product1 === product.name"
>{{product.name}}</option>
</select>
</div>
</div>
</template>
<script>
// chosen products come from vuex store
computed: {
product1() {
return store.state.product1;
},
product2() {
return store.state.product2;
},
}
</script>
但是我怎样才能在 v-for 循环中将其更改为自动,可能使用索引?
我需要的实际上是一个循环来渲染这个:
<template>
<div>
<select>
<option :selected="product1 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product1 === product.name"
>{{product.name}}
</option>
</select>
<select>
<option :selected="product2 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product2 === product.name"
>{{product.name}}
</option>
</select>
</div>
</template>
我试过使用类似的东西:
:selected="`product${index}` === product.name"
但这给出了一个字符串,而不是计算的 属性 值...
您可以将选中的商品放在一个数组中,然后通过索引访问:
computed: {
selectedProducts () {
return [store.state.product1, store.state.product2];
}
}
然后你可以:selected="selectedProducts[index] === product.name"
.
您可以将参数传递给您的计算 属性:
<template>
<div>
<div v-for="index in 2" :key="index">
<select>
<option :selected="getProduct(index) === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="getProduct(index) === product.name"
>{{product.name}}</option>
<script>
// chosen products come from vuex store
computed: {
getProduct() {
return index=>
store.state['product'+index];
},
}
</script>
我正在尝试弄清楚如何在 vue 中执行此操作,我一直试图在选项中绑定 "selected" 的值。
在下面的简化代码中,我得到了我想要的,但仅限于第一个产品。它与第一个计算 属性:
正确绑定<template>
<div>
<div v-for="index in 2" :key="index">
<select>
<option :selected="product1 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product1 === product.name"
>{{product.name}}</option>
</select>
</div>
</div>
</template>
<script>
// chosen products come from vuex store
computed: {
product1() {
return store.state.product1;
},
product2() {
return store.state.product2;
},
}
</script>
但是我怎样才能在 v-for 循环中将其更改为自动,可能使用索引?
我需要的实际上是一个循环来渲染这个:
<template>
<div>
<select>
<option :selected="product1 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product1 === product.name"
>{{product.name}}
</option>
</select>
<select>
<option :selected="product2 === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="product2 === product.name"
>{{product.name}}
</option>
</select>
</div>
</template>
我试过使用类似的东西:
:selected="`product${index}` === product.name"
但这给出了一个字符串,而不是计算的 属性 值...
您可以将选中的商品放在一个数组中,然后通过索引访问:
computed: {
selectedProducts () {
return [store.state.product1, store.state.product2];
}
}
然后你可以:selected="selectedProducts[index] === product.name"
.
您可以将参数传递给您的计算 属性:
<template>
<div>
<div v-for="index in 2" :key="index">
<select>
<option :selected="getProduct(index) === ''">Empty</option>
<option
v-for="(product, index) of products"
:key="index"
:selected="getProduct(index) === product.name"
>{{product.name}}</option>
<script>
// chosen products come from vuex store
computed: {
getProduct() {
return index=>
store.state['product'+index];
},
}
</script>