Я использую адресную форму автозаполнения Google. Я нашел пример на официальной странице Google. Все хорошо. Все работает! но это родной Javascript,
У меня есть приложение Vue, и мне не нравится, как я меняю значения ввода текста из JS-скрипта. Идея состоит в том, что когда я что-то меняю в основном вводе, прослушиватель событий JS должен изменять значения для других вводов:
document.getElementById(addressType).value = val;
Проблема в том, что я должен использовать "документ" для изменения значений:
document.getElementById('street_number').value
Я хотел бы иметь что-то вроде tat:
<input type = "text" v-model = "input.address" ref = "addressRef">
И для чтения значений:
export default {
data() {
return {
input: {
address: "",
...
}
};
},
methods: {
test() {
console.info(this.input.address);
console.info(this.$refs.addressRef);
}
}
Итак, вопрос:
После этого вы можете сгенерировать событие input
, на которое v-model
полагается для обновления своего value
:
let el = document.getElementById("id");
el.value = val;
el.dispatchEvent(new Event('input'));
В бою:
Vue.config.devtools = false
const app = new Vue({
el: '#app',
data: {
message: null
},
methods: {
updateBinding() {
let el = document.getElementById("input");
el.value = 'Hello!';
el.dispatchEvent(new Event('input'));
}
}
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id = "app">
<button @click = "updateBinding">Click me </button><br>
<input id = "input" v-model = "message" placeholder = "edit me">
<p>Message is: {{ message }}</p>
</div>
@grep new Event(addressType)
должен быть new Event('input')
Похоже, это не работает в мой пример. Не могли бы вы мне помочь?