【发布时间】:2017-08-07 21:56:21
【问题描述】:
我使用带有单个文件组件的 webpack。
我的菜单标题中有 1 个 Vue 实例来显示购物车购物下拉菜单:
import Vue from 'vue';
import App from './AppShoppingCart.vue';
new Vue({
el: '#shoppingCartApp',
template: '<App/>',
components: {App}
});
我在同一页面(包含产品的目录)中有另一个 Vue 实例:
import Vue from 'vue';
import App from './AppCatalog.vue';
new Vue({
el: '#catalogApp',
template: '<App/>',
components: {App}
});
我想将一个事件从一个实例发送到另一个实例: 当目录发生变化时,我想在 ShoppingCart 中调用一个函数。
我测试eventHub:
import Vue from 'vue';
var eventHub = new Vue();
export default eventHub;
所以我在每个实例上导入事件:
import eventHub from './events/eventHub';
在目录中:
eventHub.$emit( "actproductslist-changed" );
在购物车中:
eventHub.$on('actproductslist-changed', function(){ alert('AppShoppingCart') } );
但这行不通。仅当 $on 和 $emit 在同一 Vue 实例中时才有效。
我认为 webpack 创建了 2 个模块,我无法在我的 2 个实例之间共享变量。
任何人都知道使用 webpack 拥有多个实例的全局变量?
【问题讨论】: