我使用evntbus在两个组件之间传递数据 在第一个单击按钮时,提交的函数就像这样执行,我将对象数组发送到另一个组件
submitted(){
this.products.push(this.product);
EventBus.$emit('prod', this.products);
}
和另一个组成部分:
created(){
EventBus.$on('prod', function (productObject) {
console.log('event received!', userObject);
this.produc = productObject.products
console.log('The product: ', this.produc)
}.bind(this));
console.log('User outside eventbus:', this.produc);
}
问题是我无法访问第二个组件中使用eventbus传递的对象,任何人都无法帮助我吗? productobject的价值是
答案 0 :(得分:1)
首先,它应该是EventBus.$emit('prod', this.products);
,因为你在EventBus上发出事件,而不是在组件上。
其次,将this.products
(数组)传递给事件总线,但似乎将其视为处理函数中的单个对象。此外,您正试图访问它的某些任意值(产品),显然认为事件数据对象以某种方式记住它存储在哪个变量中。但事实并非如此。
因此,根据您是否确实需要将整个产品系列传递到EventBus,您有两种选择:
1)如果你确实需要this.products
,请访问其他组件中的最后一个元素:
EventBus.$on('prod', function(products) {
this.product = products[products.length - 1];
console.log('The product: ', this.product);
}.bind(this));
2)如果没有,只需发送单品并直接使用:
EventBus.$emit('prod', this.product);
// ...and in another component
EventBus.$on('prod', function(product) {
this.product = product;
console.log('The product: ', this.product);
}.bind(this));