#vue.js #vue-component
#vue.js #vue-компонент
Вопрос:
Я использую этот код для смещения фокуса между текстовыми вводимыми данными в v-for
списке:
HTML
<input :ref="'inputField' index" @keydown.down="movedown(index)" type="text"
enter code here`v-model="todo.text">
JS
movedown: function(index){
this.$nextTick(() =>
this.$refs["inputField" (1 index)][0].focus()
);
}
Это отлично работает, когда поля ввода находятся в том же компоненте, что и v-for. Однако, когда я перемещаю поля ввода и код в дочерний компонент, я вместо этого получаю сообщение об ошибке «this.$refs[(«InputField» (1 индекс))] не определено«.
Вот рабочий JSFiddle, где вы можете перемещать входные данные вниз с помощью стрелки вниз: https://jsfiddle.net/Gnopps/w5xqa1r9 /
Здесь тот же код, но в дочернем компоненте, и вы больше не можете двигаться вниз: https://jsfiddle.net/Gnopps/y17en6o4 /
Есть ли у кого-нибудь идеи, как я могу это исправить, чтобы я мог смещать фокус также с полями ввода в дочернем компоненте?
Комментарии:
1. Вы можете попробовать что-то подобное этому . При нажатии кнопки компонент отправит событие родительскому компоненту, а родительский компонент сфокусирует следующий компонент.
2. Вы получаете эту ошибку, потому что не все компоненты используют один и тот же
$refs
объект. У каждого из них есть свой собственный$refs
объект, который заполняется тем, что вы помечаете в их шаблоне с помощьюref
атрибута. Итак, вы передаете0
в качествеindex
реквизита этот первый дочерний компонент, а затем, когдаmovedown
запускается метод, он пытается получить доступthis.$refs["inputField1"][0]
, который не существует, потому что единственная ссылка, которую вы определили для этого компонента, — этоthis.$refs["inputField0"]
.3. Отлично, спасибо @ljubadr
Ответ №1:
ответ любадра в комментариях сработал отлично. В основном переместить ref в родительский, а затем this.$refs["inputField" (1 index)][0].$el.focus()
:
Вы можете попробовать что-то вроде этого. При нажатии кнопки компонент отправит событие родительскому компоненту, а родительский компонент сфокусирует следующий компонент
Комментарии:
1. Gnopps вы можете опубликовать ответ по ссылке, которую я предоставил, я не возражаю. У меня нет времени создавать ответ