我在Vue模板中有一个简单的输入框,我想像这样使用debounce或多或少:
<input type="text" v-model="filterKey" debounce="500">
但是,该debounce
属性已在Vue 2中弃用。该建议仅说:“使用v-on:input +第三方防抖功能”。
您如何正确实施?
我尝试使用lodash,v-on:input和v-model来实现它,但是我想知道是否可以在没有额外变量的情况下进行操作。
在模板中:
<input type="text" v-on:input="debounceInput" v-model="searchInput">
在脚本中:
data: function () {
return {
searchInput: '',
filterKey: ''
}
},
methods: {
debounceInput: _.debounce(function () {
this.filterKey = this.searchInput;
}, 500)
}
然后,在computed
道具中使用filterkey 。
如果您使用的是Vue,也可以使用
v.model.lazy
代替,debounce
但请记住,v.model.lazy
由于Vue限制了自定义组件的使用,因此并非总是可以使用。对于自定义组件,应
:value
与@change.native
<b-input :value="data" @change.native="data = $event.target.value" ></b-input>