エディションの入力を動的に作成しました(要素を含むリスト、すべての要素は独自のIDを持ちます)。 特定の要素の編集が開始された場合にのみ、すべてがv-if
になります。 そのため、私は$refs
を使用することができません。これは、Vueではrefで表示されないためです。
どうすれば解決できますか? jQueryを追加したり、バニラJSを使う必要がなくなる度に、頻繁にそういうことが必要になるのは本当にありません。
エディションの入力を動的に作成しました(要素を含むリスト、すべての要素は独自のIDを持ちます)。 特定の要素の編集が開始された場合にのみ、すべてがv-if
になります。 そのため、私は$refs
を使用することができません。これは、Vueではrefで表示されないためです。
どうすれば解決できますか? jQueryを追加したり、バニラJSを使う必要がなくなる度に、頻繁にそういうことが必要になるのは本当にありません。
通常、編集前にspan
と入力してください。v-if
はではなく、がと結合されていますので、event.target.nextSibling.focus()
のようになります。他のクリックイベント内でのみ関連だけで何かありながら、私は$refs
を宣言として$refs
にevent.target...
を好む
は、コンポーネントの構造が複雑に。
あなたが本当にバニラJS(離れて集束するための)の使用を避けたかったなら、私はあなたがコンポーネントにリストの要素を移動する必要があることをお勧めしたい:
方法Vue.component('list-items', {
template:
\t `<div>
\t <button @click="edit">edit</button>
<input v-if="editing" ref="input" type="text" :value="value" @input="$emit('input', $event.target.value)">
\t </div>`,
props: ['value'],
data() {
\t return {
\t editing: false,
}
},
methods: {
\t edit() {
\t this.editing = !this.editing
if (this.editing) {
\t this.$nextTick(() => {
\t this.$refs.input.focus()
})
}
},
},
})
new Vue({
el: '#app',
data: {
list: [{
title: 'foo',
}, {
title: 'bar',
}]
},
})
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<list-items v-model="item.title" v-for="item in list"></list-items>
<pre>{{ list }}</pre>
</div>
入力の編集をトリガーしますか? – GuyC
'@Click'であり、actionは選択された要素をeditedElementとして設定しています。 –