Я пытаюсь создать компонент-оболочку для элемента <input/>
в Vue.js.
Компонент:
<template>
<div>
<input v-bind="$attrs" :value="value" @input="input" />
...
</div>
<template>
Vue.component("my-input", {
inheritAttrs: false,
props: ['value'],
methods: {
input($event): void {
this.$emit("input", $event.target.value)
}
}
})
Использование:
<my-input v-model="myModel" />
Это, кажется, работает просто отлично.Модель обновляется через обработчик входных событий, выдавая значение целевого элемента.
Однако сейчас я пытаюсь использовать этот компонент с некоторым существующим кодом:
<my-input v-model="myModel2" @input="something = $event.target.value" />
Это гдеУ меня проблемы с событием $emit("input")
.Я получаю следующую ошибку:
Невозможно прочитать свойство 'значение' из неопределенного
Итак, мой $emit
испускает значение и теперь существующий обработчик событий @input="something..."
не может правильно ссылаться на $event
.
Если я изменю метод input
моего компонента, чтобы он выдавал $event
вместо $event.target.value
, новый код кажетсяна работу, но тогда модель не обновляется обновляется до InputEvent вместо фактического значения .
Я неуверен, что мне нужно сделать.