错误:无法读取未定义的属性(Vue)
2019-06-11
4214
我想将数据从一个组件传递到另一个组件。因此,第一个组件应该在数据更新时发出 BusEvent。调用了更新函数,但我总是在控制台中收到错误:更新钩子中的错误:“TypeError:无法读取未定义的属性‘$emit’”
另一个组件也没有收到高度/宽度。我在这里收到相同的错误:TypeError:无法读取未定义的属性‘$emit’。
我刚开始学习 vue,我不明白哪里出了问题。非常感谢您的帮助!
高度和宽度在组件一中初始化,所以这不是问题所在。
//Definition of EventBus in main.js file
export const EventBus = new Vue();
//First Component
import EventBus from '@/main.js'
export default {
data: function () {
return {
height: '',
width: ''
}
},
updated() {
EventBus.$emit('emited', this.height, this.width);
}
}
//Second Component
import EventBus from '@/main.js'
export default {
data: function () {
return {
height: '',
width: ''
}
},
mounted() {
const self = this
EventBus.$on('emited', function (height, width) {
alert('WORKS!')
self.height = height
self.width = width
})
}
}
1个回答
-
EventBus 应像这样导入
import { EventBus } from '@/main.js'
-
如果您想通过
$emit
传递多个值,则应使用对象。
将
EventBus.$emit('emited', this.height, this.width);
替换为
EventBus.$emit('emited', {height: this.height, width: this.width});
然后对于侦听器:
EventBus.$on('emited', function ({height, width}) ...
Emīls Gulbis
2019-06-11