【发布时间】:2017-04-09 16:37:27
【问题描述】:
我正在尝试在 Vue 中创建一个可重用的样式输入字段。要使其样式化(例如,内部带有图标),我需要将其包装在另一个 html 元素中。
让我们调用下面的例子StyledInput
<div class="hasIcon">
<input />
<i class="someIcon"></i>
<div>
如果我想使用StyledInput,它可能看起来像这样:
<styled-input @keyup.enter="doSomething">
</styled-input>
但这不起作用,因为事件侦听器被附加到 <div> 而不是 <input>。
解决方法可能是从输入字段发出所有键事件:
<div class="hasIcon">
<input @keyup="$emit('keyup', $event) />
<i class="someIcon"></i>
<div>
但这不会很好地扩展,因为每次开发人员使用未映射的道具或事件时都必须重写它。
有没有办法只让内部元素暴露给任何使用它的人?
【问题讨论】:
标签: vue-component vue.js