vue实现有一个数字数组前面有input选项选中之后求对应的和,点击取消input按钮后求剩下选中值的和
时间: 2023-12-03 17:42:24 浏览: 104
vue循环中点击选中再点击取消(单选)的实现
你可以通过以下步骤实现这个功能:
1. 在 Vue 组件中,定义一个数组来存储数字,定义一个变量 `inputValue` 来存储输入框的值和一个变量 `isInputVisible` 来判断输入框是否可见。
2. 创建一个计算属性 `selectedNumbers`,用于返回选中的数字数组。
```javascript
computed: {
selectedNumbers() {
return this.numbers.filter(number => number.isSelected);
},
}
```
3. 创建另一个计算属性 `sum`,用于返回选中数字的和。
```javascript
computed: {
sum() {
let sum = 0;
this.selectedNumbers.forEach(number => {
sum += number.value;
});
return sum;
},
}
```
4. 在模板中,使用 `v-for` 渲染数字数组,使用 `v-model` 绑定每个数字的选中状态。
```html
<div v-for="(number, index) in numbers" :key="index">
<input type="checkbox" v-model="number.isSelected">
{{ number.value }}
</div>
```
5. 在模板中,使用 `v-if` 和 `v-show` 控制输入框的显示和隐藏,使用 `v-model` 绑定输入框的值。
```html
<button @click="isInputVisible = true">输入</button>
<input v-show="isInputVisible" type="number" v-model="inputValue">
<button @click="isInputVisible = false; inputValue = 0">取消</button>
```
6. 在计算属性 `sum` 中,判断输入框是否可见,如果可见则将输入框的值加入到和中。
```javascript
computed: {
sum() {
let sum = 0;
this.selectedNumbers.forEach(number => {
sum += number.value;
});
if (this.isInputVisible) {
sum += Number(this.inputValue);
}
return sum;
},
}
```
完整代码如下:
```html
<template>
<div>
<div v-for="(number, index) in numbers" :key="index">
<input type="checkbox" v-model="number.isSelected">
{{ number.value }}
</div>
<button @click="isInputVisible = true">输入</button>
<input v-show="isInputVisible" type="number" v-model="inputValue">
<button @click="isInputVisible = false; inputValue = 0">取消</button>
<p>选中数字的和为:{{ sum }}</p>
</div>
</template>
<script>
export default {
data() {
return {
numbers: [
{ value: 1, isSelected: false },
{ value: 2, isSelected: false },
{ value: 3, isSelected: false },
{ value: 4, isSelected: false },
{ value: 5, isSelected: false },
],
inputValue: 0,
isInputVisible: false,
};
},
computed: {
selectedNumbers() {
return this.numbers.filter(number => number.isSelected);
},
sum() {
let sum = 0;
this.selectedNumbers.forEach(number => {
sum += number.value;
});
if (this.isInputVisible) {
sum += Number(this.inputValue);
}
return sum;
},
},
};
</script>
```
阅读全文