【发布时间】:2017-05-03 04:17:24
【问题描述】:
就像我需要动态向父组件的方法发出事件的标题一样,我有一个这样的组件
<TableComponent
:actionmenus="actionmenus"
@edit="parenteditmethod"
@delete="parentdeletemethod">
</TableComponent>
这里是操作菜单对象
actionmenus: [
{title: 'Edit', emitevent: 'edit'},
{title: 'Delete', emitevent: 'delete'}
]
然后这是我的 tablecomponent 的 sn-p
...
<ul>
<li v-for="menu in actionmenus"><a @click="$emit(menu.emitevent)" class="text-menu">{{ menu.title }}</a></li>
</ul>
...
我知道这应该可以通过$emit('edit') 或$emit('delete') 轻松完成,而无需使用actionmenus 对象,但$emit() 部分应该基于传递的数组actionmenus 是动态的,以便表格组件可以在不同的情况下重复使用。我应该如何解决这个问题?有什么办法吗?
【问题讨论】:
-
您的代码有效,有什么问题?
-
@CodinCat 事件未发出。我想知道
@click="$emit(menu.emitevent)"真的是传递变量以发出函数的正确方法。 -
它确实有效,请参见示例:codepen.io/CodinCat/pen/eWRoeb
-
你是对的,我看到我的错误在我的 css 文件中。通过对元素使用焦点来显示 ul 元素可见性的父级,当我尝试单击链接时,父元素焦点丢失并且 ul 元素可见性在处理单击事件之前被隐藏。我通过在可见性转换中使用延迟来解决这个问题。我希望我的解释足够清楚,以便与我有同样问题的每个人都能理解。
标签: javascript html vuejs2