我正在尝试创建一个按钮,该按钮将根据输入/选择的复选框和输入值的数量而改变。
例如,我有一个按钮html,它会根据选择的项目数而变化
使用当前设置为0的buyCounter数据变量。我想根据复选框/输入值增加/减少此计数器。
如果选中此复选框,则取消选中-1时,其计数为+1。
在输入中,它采用输入的任何值并将其添加到计数器。例如,如果在输入上输入4,则将+4加到计数器上。
当前不关注该数字是否超过允许的数量,实际上只是在试图找出对应部分。
我在下面用Codepen创建了这个示例,以使其与我要实现的目标足够接近。在正确方向上的任何帮助将不胜感激
https://codepen.io/anon/pen/QooWZV?&editable=true&editors=101
模板
<div id="app">
<v-app id="inspire">
<v-data-table
v-model="selected"
:headers="headers"
:items="desserts"
item-key="name"
class="elevation-1"
>
<template v-slot:items="props">
<td v-if="props.item.available > 1" style="display:inline-flex">
<v-text-field style="width:5%; padding-bottom:10px;"></v-text-field> of {{ props.item.available }}
</td>
<td v-else>
<v-checkbox
v-on:change="increment($event)"
v-model="props.selected"
primary
hide-details
></v-checkbox>
</td>
<td>{{ props.item.name }}</td>
<td class="text-xs-right">{{ props.item.calories }}</td>
<td class="text-xs-right">{{ props.item.fat }}</td>
<td class="text-xs-right">{{ props.item.carbs }}</td>
<td class="text-xs-right">{{ props.item.protein }}</td>
<td class="text-xs-right">{{ props.item.iron }}</td>
</template>
</v-data-table>
<v-layout row wrap class="">
<v-flex xs4 class="text-xs-left">
<v-btn
v-if="buyCounter < 1"
color="blue-grey"
class="white--text">
Buy
</v-btn>
<v-btn
v-else-if="buyCounter > 0 && buyCounter < 2"
color="blue-grey"
class="white--text">
Buy {{ buyCounter }} Item
</v-btn>
<v-btn
v-else-if="buyCounter > 1"
color="blue-grey"
class="white--text">
Buy {{ buyCounter }} Items
</v-btn>
</v-flex>
<v-flex xs4 class="text-xs-center">
</v-flex>
<v-flex xs4 class="text-xs-right">
</v-flex>
</v-layout>
</v-app>
</div>
脚本
new Vue({
el: '#app',
data () {
return {
selected: [],
buyCounter: 0,
headers: [
{
text: 'Count',
align: 'left',
sortable: false,
value: ''
},
{
text: 'Dessert (100g serving)',
align: 'left',
sortable: false,
value: 'name'
},
{ text: 'Calories', value: 'calories' },
{ text: 'Fat (g)', value: 'fat' },
{ text: 'Carbs (g)', value: 'carbs' },
{ text: 'Protein (g)', value: 'protein' },
{ text: 'Iron (%)', value: 'iron' }
],
desserts: [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
iron: '1%',
available: 1
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
protein: 4.3,
iron: '1%',
available: 2
},
{
name: 'Eclair',
calories: 262,
fat: 16.0,
carbs: 23,
protein: 6.0,
iron: '7%',
available: 1
},
{
name: 'Cupcake',
calories: 305,
fat: 3.7,
carbs: 67,
protein: 4.3,
iron: '8%',
available: 1
},
{
name: 'Gingerbread',
calories: 356,
fat: 16.0,
carbs: 49,
protein: 3.9,
iron: '16%',
available: 3
},
{
name: 'Jelly bean',
calories: 375,
fat: 0.0,
carbs: 94,
protein: 0.0,
iron: '0%',
available: 1
},
{
name: 'Lollipop',
calories: 392,
fat: 0.2,
carbs: 98,
protein: 0,
iron: '2%',
available: 2
},
{
name: 'Honeycomb',
calories: 408,
fat: 3.2,
carbs: 87,
protein: 6.5,
iron: '45%',
available: 1
},
{
name: 'Donut',
calories: 452,
fat: 25.0,
carbs: 51,
protein: 4.9,
iron: '22%',
available: 1
},
{
name: 'KitKat',
calories: 518,
fat: 26.0,
carbs: 65,
protein: 7,
iron: '6%',
available: 3
}
]
}
},
methods:{
increment(event){
console.log(this.selected);
const isChecked = event;
if(isChecked){
this.buyCounter++;
}else{
this.buyCounter--;
}
}
}
})
希望创建一个按钮,该按钮可以识别要购买的商品数量。