vue.js:每次按键时都没有触发输入

时间:2018-04-19 20:27:36

标签: vue.js

我有一个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;
        }
      }

    }
  },

1 个答案:

答案 0 :(得分:7)

  

对于需要IME(中文,日文,韩文等)的语言,   你会注意到在IME组合期间v-model没有得到更新。   如果您还想要满足这些更新,请使用输入事件   代替。

     

https://vuejs.org/v2/guide/forms.html#vmodel-ime-tip

您可以将v-model="model"更改为:value="text" @input="text = $event.target.value",并且应按预期触发观察者