我使用v-model来处理表单中的输入,我必须更改它来绑定属性值,一开始input就像
<input type="text" class="form-control" placeholder="" v-model="username">
现在看来
<input type="text" class="form-control" placeholder="" v-bind:value="modelData.username" v-on:input="username = $event.target.value">
modelData
在 prop 中出现。它有username
。
当使用模型时,在data
中,我定义了
data: () => {
return {
username: ""
}
},
而且它工作正常,但是在把它改成v-bind
和v-on
之后,
我的问题是,现在如何在方法中获取username
的值?与过去一样,我将其作为this.username
获取,以获取值并清除它,但现在如何在方法中获取username
methods: {}
我有一个保存输入的按钮
<button class="btn btn-secondary" type="button" @click="validateFormAndSave($event)">Save</button>
当validateFormAndSave
被调用时,我现在可以有this.username
,但我不能得到值?但Vue文档说v-model
和v-bind:value
& v-on:input
是相同的?
更新:
用户名中可能存在也不可能存在一些值,因为它被props
值填充,所以v-on:input="username = $event.target.value"
不会获得已经写入的值,而是您输入的唯一新值?或者编辑它?为什么会这样?是否有任何方法可以获得任何人在其中键入的内容或已经键入的内容?
更新:
这变得非常模糊。所以现在。1。我可以设置v-bind:value
,但是如果不编辑它,我就不能在方法中得到它。2。我不能设置这个。username ="",它也不会从输入中删除。3。@input只得到你新键入的内容,而不是已经在那里的内容
2条答案
按热度按时间kpbwa7wx1#
v-model
只是=〉的语法糖如果你想要其他的东西,这是非常容易做到的,只要改变更新侧
onInput
:然后
o8x7eapl2#
最好的解决方案是从props获取数据,并将其加载到
v-models
的表单中。使用Vue组件的
watch
特性。首先我添加了一些 prop
然后通过
watch
传递到v-model
在这种方式下,当 prop 改变时,它总是加载不同的。这样我就可以使用
v-model
,以及从 prop 加载数据到它。我发现它对我很有用。