我正在使用调用 javascript 函数的 keydown/keyup 事件,该函数将输入框的值打印到控制台(以及事件的 currentTarget 字段的值),我注意到它晚了一个字符。例如,如果我在输入框中输入 hello ,我只会在控制台中看到 hell ,直到我按下另一个键然后我看到 hello ,即使此时我已经输入了 hello1 。为什么是这样?它周围有什么吗?
这是 HTML:
<input type="text" class="form__field" v-model="keywords" v-on:keyup.enter="queryForKeywords" v-on:keydown="queryForKeywords">
和 JS:
queryForKeywords: function(event) {
var self = this;
if (this.keywords.length > 2) {
console.log("keywords value: " + this.keywords);
console.log("event value: " + event.currentTarget.value);
}
原文由 farbodg 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为您依赖于输入的
v-model
来更新keywords
属性,所以在 Vue 组件重新呈现之前,该值不会更新。您可以在传递给
this.$nextTick
的回调中访问keywords
的更新值,如本例所示: