Vue和lodash去抖有什么问题?

时间:2017-10-31 14:27:37

标签: 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 - 它可以正常工作;否则 - 功能不是去抖动。)

我做错了什么?感谢。

1 个答案:

答案 0 :(得分:2)

您无法在那里完成delay的设置。 this不是该范围内的组件。您可以在生命周期钩子中使用$watch

created () {
  this.debounceUnwatch = this.$watch('q', _.debounce(
    this.someMethod,
    this.delay
  ))
},

destroyed () {
  // Removed the watcher.
  this.debounceUnwatch()
},

了解更多信息: https://vuejs.org/v2/api/#vm-watch

修改

这也不起作用。它真的好像应该有。我认为需要做的是你需要去除更新q而不是q本身的任何内容。