我在Vue.js中构建一个组件。我在页面上有一个输入,用户可以请求一定的信用额度。目前,我正在尝试创建一个将输入量记录到控制台的功能,因为我输入它。(最后,我将根据用户输入显示/隐藏所请求的文档。我不希望他们必须点击提交按钮。)
当我选择/单击输入字段时,下面的代码会记录它。这是我的组件.vue:
<template>
<div class="col s12 m4">
<div class="card large">
<div class="card-content">
<span class="card-title">Credit Limit Request</span>
<form action="">
<div class="input-field">
<input v-model="creditLimit" v-on:change="logCreditLimit" id="credit-limit-input" type="text">
<label for="credit-limit-input">Credit Limit Amount</label>
</div>
</form>
<p>1. If requesting $50,000 or more, please attach Current Balance Sheet (less than 1 yr old).</p>
<p>2. If requesting $250,000 or more, also attach Current Income Statement and Latest Income Tax Return.</p>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'licenserow',
data: () => ({
creditLimit: ""
}),
methods: {
logCreditLimit: function (){
console.log(this.creditLimit)
}
}
}
</script>
如果我将methods
更改为computed
,则可行 - 但每次记录该值时,我都会收到错误Invalid handler for event: change
。
答案 0 :(得分:8)
使用input
事件。
<input v-model="creditLimit" v-on:input="logCreditLimit" id="credit-limit-input" type="text">
输入元素的 change
only fires when the element loses focus。每次文本更改时都会触发input
。
答案 1 :(得分:0)
将@input事件与v-model绑定是不必要的。只需绑定v-model就可以了。模型会在输入事件时自动更新。
new Vue({
el: '#app',
data: {
message: ''
}
})
<script src="https://unpkg.com/vue@2.4.4/dist/vue.min.js"></script>
<div id="app">
<input type="text" v-model="message"><br>
Output: <span>{{ message }}</span>
</div>
如果您需要将其更改为控制台,请创建特定的观察者:
new Vue({
el: '#app',
data: {
message: ''
},
watch: {
message: function (value) {
console.log(value) // log it BEFORE model is changed
}
}
})
<script src="https://unpkg.com/vue@2.4.4/dist/vue.min.js"></script>
<div id="app">
<input type="text" v-model="message"><br>
Output: <span>{{ message }}</span>
</div>