【发布时间】:2020-07-13 18:21:15
【问题描述】:
我正在尝试创建一个下拉组件,它在其中接收各种数据并且列表项是动态构建的,但是我很难检测到对列表中任何项目的点击
父母
<Dropdown
:items="[
{
text: 'Edit',
icon: 'fal fa-edit',
click: editFunction(id)
},
{
text: 'Delete',
icon: 'fal fa-trash-alt',
click: deleteFunction(id)
}
]"
/>
孩子Dropdown.vue
<template>
<div class="dropdown">
<a class="trigger">
<i class="far fa-ellipsis-h"></i>
</a>
<ul class="items">
<li v-for="(item, index) in items" :key="index" class="item">
<a>
<i :class="item.icon"></i>
{{ item.text }}
</a>
</li>
</ul>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
props: {
items: {
type: Array,
default: () => []
}
}
})
</script>
目前这种方式,只要创建父组件,就会执行editFunction(id)和deleteFunction(id)方法。
我知道这是可能的,因为 vuetifyjs 就是这样做的,但我试图检查源代码,但一无所获。
【问题讨论】:
-
只绑定
@click="item.click"到监听器,做了一次:stackoverflow.com/questions/57524110/… -
@Estradiaz 以及如何将 id 作为参数传递?
-
包起来? ()=> fn(id)?
标签: javascript vue.js vue-component