0%

vue 遍历绑定toggle icon, 动态切换action

在 Vue 中实现动态绑定 toggle action

在遍历li标签时, 动态绑定点击事件, 当点击其中一个item时调用函数. 函数内判断是否处于action状态, 是则清除 class, 从实现 toggle 的效果~ 按照这个思路也可以扩展为下拉菜单.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<template>
<div class="hello">
<ul class="list">
<li
v-for="(item, index) in itemList"
@click="openItem(index)"
:key="item.id"
>
{{ item.desc }}
<span class="icon" :class="{ action: actionItem === index }"></span>
</li>
</ul>
</div>
</template>

<script>
export default {
data() {
return {
itemList: [{ desc: 'item1' }, { desc: 'item2' }, { desc: 'item3' }],
actionItem: null
};
},
methods: {
openItem(index) {
if (this.actionItem === index) {
this.actionItem = null;
} else {
this.actionItem = index;
}
}
}
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.list {
width: 500px;
padding: 0;
margin: 0 auto;
text-align: left;
}
.list li {
position: relative;
margin: 14px 0;
padding: 10px;
border-bottom: 1px solid #ccc;
list-style: none;
cursor: pointer;
}
.list .icon {
position: absolute;
right: 10px;
width: 0;
height: 0px;
border: 10px solid;
border-color: #aaa transparent transparent transparent;
}
.list .action {
border-color: rgb(254, 0, 0);
border-radius: 50%;
}
</style>

初次点击, action触发, 再次点击清除action

「请笔者喝杯奶茶鼓励一下」

欢迎关注我的其它发布渠道