Javascript Vue和lodash debounce有什么问题?
道具:Javascript Vue和lodash debounce有什么问题?,javascript,vue.js,lodash,Javascript,Vue.js,Lodash,道具: props: { delay: Number, } 观察者: watch: { q: _.debounce(function() { console.log(this.delay); // 500; always works fine, this.delay is here }, this.delay) // never works; }, 如果硬编码延迟(设置500而不是this.delay,则该延迟有效;
props: {
delay: Number,
}
观察者:
watch: {
q: _.debounce(function() {
console.log(this.delay); // 500; always works fine, this.delay is here
}, this.delay) // never works;
},
如果硬编码延迟(设置500
而不是this.delay
,则该延迟有效;否则-功能不去抖动)
我做错了什么?谢谢。您将无法在那里完成
延迟设置<代码>此
不是该范围内的组件。您可以在生命周期挂钩中使用$watch
:
created () {
this.debounceUnwatch = this.$watch('q', _.debounce(
this.someMethod,
this.delay
))
},
destroyed () {
// Removed the watcher.
this.debounceUnwatch()
},
有关更多信息:
编辑
这也不行。看起来真的应该这样。我认为这里需要做的是,你需要去抖动任何正在更新的
q
,而不是q
本身。你有没有尝试过当你定义一个函数作为q的观察者,它做self=this并传递self.delay作为参数时会发生什么{console.log(self.delay);},self.delay)},-一点也不起作用谢谢。但是为什么传递给u.debounce的函数中有这个,如果它不在范围内呢?lodash会帮你处理传递。这是错误的。你需要调用一个去Bounce方法,只更新q
。我会更新我的答案。你可能想要去Bounce更新q
而不是q
本身。