我将构建一个自定义的虚拟键盘,这是我遇到的第一个问题。我有一个input
元素,它的值是从外部更改的,在我的例子中是通过按一个按钮。问题是似乎没有办法触发正常的'change'
事件。
在input
外部单击或按Enter都不会产生任何结果。
解决这个问题的正确方法可能是什么?
<template>
<div class="app-input">
<input @change="onChange" type="text" v-model="value" ref="input">
<button @click="onClick">A</button>
</div>
</template>
<script>
export default {
name: "AppInput",
data() {
return {
inputDiv: null,
value: ""
};
},
props: {
msg: String
},
methods: {
onClick() {
this.value = this.value + "A";
this.inputDiv.focus();
},
onChange() {
alert("changed");
}
},
mounted() {
this.$nextTick(() => {
this.inputDiv = this.$refs.input;
});
}
};
</script>
字符串
整支笔都可以找到here。
2条答案
按热度按时间guicsvcw1#
v-on:change
只会在用户操作对输入元素进行直接更改时触发。你正在寻找的是一个监视器为您的数据属性,每当您的
value
的变化,监视器将执行您想要的功能或任务。字符串
watch
语法在提供的官方vuejs文档链接中详细说明。使用data属性作为键,并提供函数作为值。查看代码片段:
型
rta7y2nd2#
当我构建任何新的vue应用程序时,我喜欢将这些事件用于搜索输入或其他不想在
@change
上触发任何函数的输入字符串
在我看来,这将提供更好的用户体验。