为什么这个去抖功能打破了“这个”?

时间:2017-06-26 02:42:59

标签: javascript vue.js vuejs2

我创建了一个去抖效用函数:

updateField: utils.debounce((event, fieldName, schema) => {
  const value = event.target.value
  this.$emit('updateField', fieldName, value, schema)
  validateFields(this)
}, 500),

我使用的是这样的:

Uncaught TypeError: _this.$emit is not a function

去抖功能有效。但是我收到了这个错误:

{{1}}

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

假设updateField是一个Vue方法,因为这是用Vue标记的,这是因为你使用的是箭头函数。

将其更改为常规功能。

updateField: utils.debounce(function(event, fieldName, schema){
  const value = event.target.value
  this.$emit('updateField', fieldName, value, schema)
  validateFields(this)
}, 500)

您不应该使用箭头函数定义Vue方法。原因是Vue将方法绑定到Vue,箭头函数无法绑定(您不能更改它们的this)。