onLoad(option) { setTimeout(function() { this.$eventBus.$on('addtohuodong',(res) => { console.log(res,'接收到的数据') this.test = res console.log(this.hudongform.content.cost,'hudongform中cost接收到的数据') console.log(this.hudongform.content.cost.length,'hudongform中cost的长度') }) }, 3000); },为什么报错
时间: 2024-03-24 12:38:36 浏览: 52
详解Angular.js的$q.defer()服务异步处理
在这段代码中,`this`指的是`setTimeout`函数的作用域,而不是Vue实例的作用域,所以在`this.$eventBus.$on`中无法访问Vue实例中的数据或方法。
为了解决这个问题,可以使用箭头函数来代替`function`,因为箭头函数不会改变`this`的作用域。修改后的代码如下:
```
onLoad(option) {
setTimeout(() => {
this.$eventBus.$on('addtohuodong', (res) => {
console.log(res, '接收到的数据')
this.test = res
console.log(this.hudongform.content.cost, 'hudongform中cost接收到的数据')
console.log(this.hudongform.content.cost.length, 'hudongform中cost的长度')
})
}, 3000);
},
```
这样就可以在箭头函数中访问Vue实例中的数据和方法了。
阅读全文