Vue watch on v-model 属性 只触发了一次
Vue watch on v-model property only fired once
我有一个 Vue 组件与报告的示例非常相似 here:
watch: {
query(n, o) {
// Display loading animation
this.loading = true;
// Search debounced
this.debouncedSearchUser();
}
},
其中 query
是使用 v-model
绑定到文本输入的字符串变量:
data() {
return {
query: "",
loading: false,
results: []
}
},
一切正常,除了 chrome 上的 android,其中 watch 触发器只触发一次(当 query
从 ""
变为我写的任何内容时)。
有什么想法吗?
编辑:
问题似乎与 v-model
指令有关:我对本机 javascript 事件进行了一些实验,并且在我取消输入焦点之前 v-model 的值不会更新。如果有人对这里的绑定感兴趣:
<input v-model="query" class="input-text-light pad-s-m f-m"/>
有什么方法可以使用 watch 和 v-model
解决这个问题?
这似乎是 v-model
的错误。因为 v-model
只是一个语法糖。
我认为您可以使用下面的代码使其工作。
<input v-bind:value="query" v-on:input="query = $event.target.value"></input>
我有一个 Vue 组件与报告的示例非常相似 here:
watch: {
query(n, o) {
// Display loading animation
this.loading = true;
// Search debounced
this.debouncedSearchUser();
}
},
其中 query
是使用 v-model
绑定到文本输入的字符串变量:
data() {
return {
query: "",
loading: false,
results: []
}
},
一切正常,除了 chrome 上的 android,其中 watch 触发器只触发一次(当 query
从 ""
变为我写的任何内容时)。
有什么想法吗?
编辑:
问题似乎与 v-model
指令有关:我对本机 javascript 事件进行了一些实验,并且在我取消输入焦点之前 v-model 的值不会更新。如果有人对这里的绑定感兴趣:
<input v-model="query" class="input-text-light pad-s-m f-m"/>
有什么方法可以使用 watch 和 v-model
解决这个问题?
这似乎是 v-model
的错误。因为 v-model
只是一个语法糖。
我认为您可以使用下面的代码使其工作。
<input v-bind:value="query" v-on:input="query = $event.target.value"></input>