Как мне скопировать V-модели: значение с: значение?
Я получаю другое поведение между использованием @input
а также v-model
, а также @input
а также :value
,
Что v-модель делает по-другому с: значением, которое я не получаю, только используя: значение?
Я создал пример в jsFiddle, который показывает разницу: верхнее поле ввода позволяет вводить только цифры, а нижнее - все, что нужно вводить.
Что мне нужно сделать, чтобы получить ту же функциональность, используя только @input
а также :value
?
1 ответ
Решение
Вы можете добиться этого, добавив ссылку на вход и обновив значение ввода через него. Проверьте здесь. https://jsfiddle.net/RiddhiParekh/nzfr0xy3/
Шаблон =>
<div id="app">
<div>
<input @input="mask1"
v-model="message1"
type="text"
placeholder="Only numbers are allowed">
<p>Message1 is: {{ message1 }}</p>
<hr/>
<input @input="mask2"
:value="message2"
type="text"
ref="myInput"
placeholder="Try numbers">
<p>Message2 is: {{ message2 }}</p>
</div>
</div>
Скрипт =>
new Vue({
el: "#app",
data: {
message1: "",
message2: ""
},
methods: {
mask1(input){
const validCharsForNumberFields = /[0-9]*(,|\.)?[0-9]*/gm
this.message1 = input.target.value.match(validCharsForNumberFields)[0]
},
mask2(input){
const validCharsForNumberFields = /[0-9]*(,|\.)?[0-9]*/gm
console.log(input)
this.$refs.myInput.value = input.target.value.match(validCharsForNumberFields)[0]
this.message2 = this.$refs.myInput.value
},
}
})