Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Vuejs-在非父子组件之间设置信息_Javascript_Html_Web_Vue.js_Components - Fatal编程技术网

Javascript Vuejs-在非父子组件之间设置信息

Javascript Vuejs-在非父子组件之间设置信息,javascript,html,web,vue.js,components,Javascript,Html,Web,Vue.js,Components,我正在尝试在两个VueJs组件之间交换信息 情况如下: 组件A是主要组件。 B和C进入A,D进入C 我想从组件B更改组件D的变量值 我已经看到,如果组件使用相同的根组件,我们可以从第一个组件向根进行广播,然后从根向第二个组件获取广播数据。 但是在我的例子中,我的组件D不是直接在根目录中,而是在“组件树”的更深处。。。所以,我试过了,但这似乎不起作用 做这件事最简单或更优雅的方法是什么 谢谢。对于类似的内容,我将使用vue文档中描述的Eventbus;用于不可知地传递信息的空白Vue对象 wind

我正在尝试在两个VueJs组件之间交换信息

情况如下:

组件A是主要组件。 B和C进入A,D进入C

我想从组件B更改组件D的变量值

我已经看到,如果组件使用相同的根组件,我们可以从第一个组件向根进行广播,然后从根向第二个组件获取广播数据。 但是在我的例子中,我的组件D不是直接在根目录中,而是在“组件树”的更深处。。。所以,我试过了,但这似乎不起作用

做这件事最简单或更优雅的方法是什么


谢谢。

对于类似的内容,我将使用vue文档中描述的Eventbus;用于不可知地传递信息的空白Vue对象

window.EventBus = new Vue();
然后在接收数据的组件中创建一个事件

mounted: function () {
    EventBus.$on('name', function (data) {
        // Do something with the data
    });
}
最后,在发送数据的组件中,需要调用该函数

methods: {
    someFunction: function () {
        EventBus.$emit('name', data);
    }
}
您可以创建一个原型链接,该链接提供对EventBus对象的访问,以便于使用

Vue.prototype.$eventBus = window.EventBus

您可以使用
this.$eventBus.$on
this.$eventBus.$emit
来访问此文件,如图所示。

可能是重复的谢谢!我使用的是Vue cli,因此我使用的语法与您不同(xxx.xx=new Vue();…我开始学习vuejs和web开发,我不知道如何将您的帮助用于我的组件。您能帮助我吗?事实上,我使用的是单页组件,我不知道如何使用您在特定模板中对我说的内容。好的,我知道了。使用单页组件模板时,我创建了一个eventBus.js文件,包括“import Vue fro”m vue\n let bus=new vue()\n export default bus'因此,如果我需要从我的eventBus发出或侦听事件,我只需要“从'@/path/eventBus'导入总线”,然后像这样使用它:'bus.$on('myEvent',myVariable)“对不起,上周我很忙。如果你正在使用组件,我通常会将其转换为一个插件。这样,你可以在主javascript中使用
Vue。使用(插件)
,那么可以从你的所有组件访问EventBus对象。好的,非常有趣!那么,这样,我怎么才能称这个新插件?