v-model 属性上的 Vue 观察仅触发一次

Sne*_*ppy 2 javascript watch lodash vue.js v-model

我有一个与此处报告的示例非常相似的 Vue 组件:

watch: {
    query(n, o) {

        // Display loading animation
        this.loading = true;

        // Search debounced
        this.debouncedSearchUser();
    }
},
Run Code Online (Sandbox Code Playgroud)

query使用v-model以下方法绑定到文本输入的字符串变量在哪里:

data() {

    return {
        query: "",
        loading: false,
        results: []
    }
},
Run Code Online (Sandbox Code Playgroud)

一切正常,除了在 android 的 chrome 上,手表触发器只触发一次(当query""我写的任何内容更改时)。

任何的想法?

编辑:

问题似乎与v-model指令有关:我对本机 javascript 事件进行了一些实验,并且在我取消对输入的关注之前,不会更新 v-model 的值。如果有人对这里感兴趣是绑定:

<input v-model="query" class="input-text-light pad-s-m f-m"/>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以使用 watch 和 来解决这个问题v-model

cho*_*sia 6

这似乎是一个错误v-model。因为v-model只是一个语法糖。我认为您可以使用下面的代码使其工作。

<input v-bind:value="query" v-on:input="query = $event.target.value"></input>
Run Code Online (Sandbox Code Playgroud)

  • 我今天偶然发现了这个,他们实际上称之为一个功能。参见:https://github.com/vuejs/vue/issues/8723 关于这个还有更多类似的报道。 (2认同)