vue.js - VueJS 有条件地显示多个输入字段
问题描述
我有一个“添加”按钮,它添加了一个选择框,当我在选择框中选择一个值时,我想显示一个输入字段,因此每次单击“添加”时它应该显示一个选择框,当我在我想显示一个输入字段。
我知道我可以使用“已选择”标志,但是当我已经添加了一个选择框时,这会将标志更改为 true,并在单击“添加”后立即显示输入字段,但我希望输入字段仅在值为时显示选择。
<template>
<button @click="onBtnClick">Add<button>
<select>...</select> # This gets added when 'Add' button is clicked
<input v-if="selected" type="text" /> # This should show when a value is selected.
<select>
</template>
data(){
return {
selected: false
}
},
methods: {
onValueSelected(){
this.selected = true
}
}
你有什么想法我能做到这一点吗?
解决方案
随意使用v-for
新字段并将其推送到集合中。
new Vue({
el: '#app',
data() {
return {
goods: []
}
},
methods: {
addSelect() {
let item = {
id: this.goods.length,
menus: [
{ value: '', text: '- select -' },
{ value: 1, text: 'Item 1' },
{ value: 2, text: 'Item 2' },
{ value: 3, text: 'Item 3' }
],
input: {
show: false
}
};
this.goods.push(item);
},
showInput(item, e) {
item.input.show = e.currentTarget.selectedIndex > 0;
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<button @click="addSelect">Add to cart</button>
<div v-for="item in goods" :key="item.id" class="goods">
<select @change="showInput(item, $event)">
<option
v-for="opt in item.menus"
:key="opt.key"
value="opt.value">
{{opt.text}}
</option>
</select>
<input v-if="item.input.show" type="text" value="0" />
</div>
</div>
推荐阅读
- visual-c++ - 寻找材料以了解如何使用 Visual C++ 开发 UWP 应用程序
- javascript - 何使用 typescript 函数作为 JavaScript 库的回调
- shell - 在Shell脚本中使用双双引号在字符串之间提取数据
- tensorflow - 如何获取 tensorflow.data.Dataset 的行数、列数/维度?
- coldfusion - Lucee 中的图表
- android - 两天后 Google Play 应用总安装量仍为 0+
- javascript - Heroku 没有为 react package.json 获取端口
- python - 在几个选项中,如何在 TensorFlow 中随机执行其中一个?
- ansible - 如何根据匹配字符串定义何时条件
- python - 在类列表中输入分隔值