Vue.js Vue:将类添加到v-for中的一个项
我有一个v-for循环中的项目列表。我在@click上有一个函数,它将删除该项目,但我想在单击该项目时给它一个类,以便在短时间内更改背景颜色,以便用户知道他们单击了该项目,并且该项目正在删除。在我的Vue.js Vue:将类添加到v-for中的一个项,vue.js,vuejs2,Vue.js,Vuejs2,我有一个v-for循环中的项目列表。我在@click上有一个函数,它将删除该项目,但我想在单击该项目时给它一个类,以便在短时间内更改背景颜色,以便用户知道他们单击了该项目,并且该项目正在删除。在我的deleteItem函数中,我将deletingItem设置为true,但这显然会产生问题,因为它会将该类应用于In v-for中的所有div。解决这个问题的最佳方法是什么,使它只应用于我单击的div <div :class="{'box': true, 'deleting-it
deleteItem
函数中,我将deletingItem
设置为true,但这显然会产生问题,因为它会将该类应用于In v-for中的所有div。解决这个问题的最佳方法是什么,使它只应用于我单击的div
<div :class="{'box': true, 'deleting-item': deletingItem}" v-for="(item,index) in items">
<div @click="deleteItem(item,index)>Delete</div>
</div>
您需要将单击的项保存在数据属性中
<template>
<div>
<div v-for="(item, index) in items">
<button @click="deleteItem(index)" :class="{'delete-in-progress-class': index === indexOfDeletedItem}> {{item}} </button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: ['a', 'b', 'c']
indexOfDeletedItem: null
}
},
methods: {
deleteItem(index) {
this.indexOfDeletedItem = index;
setTimeout(() => { this.items.splice(index, 1); this.indexOfDeletedItem = null }, 1000); //delete item after 1s
}
}
}
</script>
<style>
.delete-in-progress-class {
background: red;
}
</style>
您需要将单击的项保存在数据属性中
<template>
<div>
<div v-for="(item, index) in items">
<button @click="deleteItem(index)" :class="{'delete-in-progress-class': index === indexOfDeletedItem}> {{item}} </button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: ['a', 'b', 'c']
indexOfDeletedItem: null
}
},
methods: {
deleteItem(index) {
this.indexOfDeletedItem = index;
setTimeout(() => { this.items.splice(index, 1); this.indexOfDeletedItem = null }, 1000); //delete item after 1s
}
}
}
</script>
<style>
.delete-in-progress-class {
background: red;
}
</style>
您必须使用项目相关的item.deletingItem
,而不是全局的deletingItem
。您必须使用项目相关的item.deletingItem
,而不是全局的deletingItem
。