我有一个input
的模型属性正在观看。问题是, Chrome Android 设备中的每次按键都不会调用watch方法。如果我点击输入文本,则会调用它。
它确实在过去有效,我不知道发生了什么。
在 Chrome桌面上运行(即:每个按键都会调用watch
text
。
输入:
<input id="input-message" ref="input-message" :disabled="disabled"
@focus="$emit('focus')" @keyup.enter="sendMessage"
v-model="text" type="text" placeholder="Start typing..."
class="form-control">
观察:
watch: {
disabled: function(val) {
if (!val) {
this.$nextTick(() => {
this.$refs["input-message"].focus();
});
}
},
text: function(val) {
var mode = this.micMode;
if (this.userAgent !== "ios") {
let isEmpty = val.length === 0;
if (mode === 1 && !isEmpty) {
this.micMode = 0;
} else if (mode === 0 && isEmpty) {
this.micMode = 1;
}
}
}
},
答案 0 :(得分:7)
对于需要IME(中文,日文,韩文等)的语言, 你会注意到在IME组合期间v-model没有得到更新。 如果您还想要满足这些更新,请使用输入事件 代替。
您可以将v-model="model"
更改为:value="text" @input="text = $event.target.value"
,并且应按预期触发观察者