Вот более элегантный способ написать это:
<template>
<div>
<button v-for="(item, index) in items" :key="index" @click="toggleItem(index)">
{{ item.name }}
</button>
<p>{{ totalPrice }}</p>
</div>
</template>
export default {
data() {
return {
items: [
{ price: 20, name: 'item 1', isActive: false },
{ price: 40, name: 'item 2', isActive: false },
{ price: 60, name: 'item 3', isActive: false },
],
};
},
computed: {
totalPrice() {
return this.items.filter(item => item.isActive).reduce((a, b) => a + b.price, 0);
},
},
methods: {
toggleItem(index) {
this.items[index].isActive = !this.items[index].isActive;
},
},
};
Главное, что вы можете вызывать методы с аргументами из вашего шаблона.