【发布时间】:2023-04-02 17:35:01
【问题描述】:
我想在 Vue 中对输入字段进行去抖动,这非常简单,但我想让每个字段的去抖动等待时间可配置,这显然不是那么简单。
我的输入字段由对象支持,如下所示:
filters: [
{
title: 'Foo',
value: null,
debounce: 1200
},
{
title: 'Bar',
value: null,
debounce: 400
}
]
然后我使用这些对象创建输入字段:
<div v-for="filter in filters">
<input type="text" @input="debounceInput($event, filter)" :value="filter.value">
<span>{{ filter.value }}</span>
</div>
我正在使用这样的 Lodash debounce 方法,效果很好:
methods: {
debounceInput: _.debounce((event, filter) => {
filter.value = event.target.value;
}, 500)
}
但我真的很想让去抖动等待时间可配置。它存储在filter 中,但由于过滤器作为参数传递给_.debounce,我无法在_.debounce 之外访问它,这是我真正需要做的。
我尝试在 debounce 调用周围封装一个匿名函数(这对我来说似乎是最明显的解决方案),如下所示:
debounceInputVariable(event, filter) {
return _.debounce((event, filter) => {
filter.value = event.target.value;
}, filter.debounce)
}
但这不起作用。我也尝试过bind 和call 无济于事。
JSFiddle:https://jsfiddle.net/thebluenile/ma6nvqzh/
这可能吗?
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component debounce