Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vue和lodash debounce有什么问题?_Javascript_Vue.js_Lodash - Fatal编程技术网

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
本身。