私はVueで再利用可能なスタイル付き入力フィールドを作成しようとしています。スタイルを設定するには(たとえば、アイコンを使用して)別のhtml要素でラップする必要があります。Vueにラップされた<input>を公開する方法?
<styled-input @keyup.enter="doSomething">
</styled-input>
をしかし、これが接続されているため、イベントリスナーに、機能しません。
は、私はそれがそうのように見えるかもしれませんStyledInput
を使用したい場合は
StyledInput
<div class="hasIcon">
<input />
<i class="someIcon"></i>
<div>
以下の例を呼び出すことができます<input>
の代わりに<div>
それに
この問題を回避するには、入力フィールドからすべてのキー・イベントを発行することができます
<div class="hasIcon">
<input @keyup="$emit('keyup', $event) />
<i class="someIcon"></i>
<div>
しかし、それは開発者がマップされていない小道具を使用したりするたびに書き換えなければならないので、これはうまくスケールしませんイベント。
内側の要素を誰にでも公開する方法はありますか?
デベロッパーが一貫したコンポーネントAPIを作成するように強制しても、コンポーネントがドキュメント化/マップされたものだけを公開するようにするのは意味があると思います。あなたはどちらも解決策を提示し、良い答えを書いています。ありがとう! –